Memutar kata sandi untuk pengguna secara otomatis - Amazon ElastiCache untuk Redis

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Memutar kata sandi untuk pengguna secara otomatis

Dengan AWS Secrets Manager, Anda dapat mengganti kredensial hard-code dalam kode Anda (termasuk kata sandi) dengan panggilan API ke Secrets Manager untuk mengambil rahasia secara terprogram. Ini membantu memastikan bahwa rahasia tidak dapat dikompromikan oleh seseorang yang memeriksa kode Anda, karena rahasianya tidak ada di sana. Selain itu, Anda dapat mengonfigurasi Secrets Manager untuk memutar rahasia untuk Anda secara otomatis sesuai dengan jadwal yang Anda tentukan. Ini memungkinkan Anda untuk mengganti rahasia jangka panjang dengan rahasia jangka pendek, yang membantu mengurangi risiko kompromi secara signifikan.

Dengan menggunakan Secrets Manager, Anda dapat memutar kata sandi ElastiCache for Redis (yaitu, rahasia) secara otomatis menggunakan fungsi AWS Lambda yang disediakan oleh Secrets Manager.

Untuk informasi selengkapnya tentang AWS Secrets Manager, silakan lihat Apa itu AWS Secrets Manager?

Cara ElastiCache menggunakan rahasia

Dengan Redis 6, ElastiCache for Redis Kontrol Akses Berbasis Peran (RBAC) diperkenalkan untuk mengamankan klaster Redis. Fitur ini memungkinkan koneksi tertentu dibatasi dalam hal perintah yang dapat dijalankan dan kunci yang dapat diakses. Dengan RBAC, saat pelanggan membuat pengguna dengan kata sandi, nilai kata sandi harus dimasukkan secara manual dalam teks biasa dan terlihat oleh operator.

Dengan Secrets Manager, aplikasi mengambil kata sandi dari Secrets Manager bukannya memasukkannya secara manual dan menyimpannya dalam konfigurasi aplikasi. Untuk informasi tentang cara melakukannya, silakan lihat Bagaimana pengguna ElastiCache dikaitkan dengan rahasia.

Ada biaya yang dikeluarkan untuk menggunakan rahasia. Untuk informasi harga, lihat AWSHarga Secrets Manager.

Bagaimana pengguna ElastiCache dikaitkan dengan rahasia

Secrets Manager akan menyimpan referensi untuk pengguna terkait di bidang SecretString rahasia. Tidak akan ada referensi ke rahasia dari sisi ElastiCache.

{ "password": "strongpassword", "username": "user1", "user_arn": "arn:aws:elasticache:us-east-1:xxxxxxxxxx918:user:user1" //this is the bond between the secret and the user }

Fungsi rotasi Lambda

Untuk mengaktifkan rotasi kata sandi otomatis Secrets Manager, Anda akan membuat fungsi Lambda yang akan berinteraksi dengan API modify-user untuk memperbarui kata sandi pengguna.

Untuk informasi tentang cara kerjanya, lihat Cara kerja rotasi.

catatan

Untuk beberapa layanan AWS, untuk menghindari skenario wakil yang membingungkan, AWS merekomendasikan agar Anda menggunakan baik kunci kondisi global aws:SourceArn dan aws:SourceAccount. Namun, jika Anda menyertakan kondisi aws:SourceArn dalam kebijakan fungsi rotasi Anda, fungsi rotasi hanya dapat digunakan untuk memutar rahasia yang ditentukan oleh ARN tersebut. Kami menyarankan Anda hanya menyertakan kunci konteks aws:SourceAccount sehingga Anda dapat menggunakan fungsi rotasi untuk beberapa rahasia.

Untuk masalah apa pun yang mungkin Anda temui, lihat Memecahkan masalah rotasi Secrets Manager AWS.

Cara membuat pengguna ElastiCache dan mengaitkannya dengan Secrets Manager

Langkah-langkah berikut menggambarkan cara membuat pengguna dan mengaitkannya dengan Secrets Manager:

  1. Buat pengguna yang tidak aktif

    Untuk Linux, macOS, atau Unix:

    aws elasticache create-user \ --user-id user1 \ --user-name user1 \ --engine "REDIS" \ --no-password \ // no authentication is required --access-string "*off* +get ~keys*" // this disables the user

    Untuk Windows:

    aws elasticache create-user ^ --user-id user1 ^ --user-name user1 ^ --engine "REDIS" ^ --no-password ^ // no authentication is required --access-string "*off* +get ~keys*" // this disables the user

    Anda akan melihat respons yang mirip dengan berikut ini:

    { "UserId": "user1", "UserName": "user1", "Status": "active", "Engine": "redis", "AccessString": "off ~keys* -@all +get", "UserGroupIds": [], "Authentication": { "Type": "no_password" }, "ARN": "arn:aws:elasticache:us-east-1:xxxxxxxxxx918:user:user1" }
  2. Buat Rahasia

    Untuk Linux, macOS, atau Unix:

    aws secretsmanager create-secret \ --name production/ec/user1 \ --secret-string \ '{ "user_arn": "arn:aws:elasticache:us-east-1:123456xxxx:user:user1", "username":"user1" }'

    Untuk Windows:

    aws secretsmanager create-secret ^ --name production/ec/user1 ^ --secret-string ^ '{ "user_arn": "arn:aws:elasticache:us-east-1:123456xxxx:user:user1", "username":"user1" }'

    Anda akan melihat respons yang mirip dengan berikut ini:

    { "ARN": "arn:aws:secretsmanager:us-east-1:123456xxxx:secret:production/ec/user1-eaFois", "Name": "production/ec/user1", "VersionId": "aae5b963-1e6b-4250-91c6-ebd6c47d0d95" }
  3. Konfigurasikan fungsi Lambda untuk memutar kata sandi Anda

    1. Masuk ke AWS Management Console dan buka konsol Lambda di https://console.aws.amazon.com/lambda/

    2. Pilih Fungsi pada panel navigasi lalu pilih fungsi yang Anda buat. Pilih nama fungsi, bukan kotak centang di sebelah kirinya.

    3. Pilih tab Konfigurasi.

    4. Dalam konfigurasi Umum, pilih Edit lalu atur Waktu habis setidaknya 12 menit.

    5. Pilih Simpan.

    6. Pilih Variabel lingkungan lalu atur yang berikut:

      1. SECRETS_MANAGER_ENDPOINT - https://secretsmanager.REGION.amazonaws.com

      2. SECRET_ARN — Amazon Resource Name (ARN) dari rahasia yang Anda buat pada Langkah 2.

      3. USER_NAME - Nama pengguna dari pengguna ElastiCache,

      4. Pilih Simpan.

    7. Pilih Izin

    8. Di bawah Peran eksekusi, pilih nama peran fungsi Lambda untuk dilihat di konsol IAM.

    9. Fungsi Lambda akan memerlukan izin berikut untuk memodifikasi pengguna dan mengatur kata sandi:

      ElastiCache

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:DescribeUsers", "elasticache:ModifyUser" ], "Resource": "arn:aws:elasticache:us-east-1:xxxxxxxxxx918:user:user1" } ] }

      Secrets Manager

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret", "secretsmanager:PutSecretValue", "secretsmanager:UpdateSecretVersionStage" ], "Resource": "arn:aws:secretsmanager:us-east-1:xxxxxxxxxxx:secret:XXXX" }, { "Effect": "Allow", "Action": "secretsmanager:GetRandomPassword", "Resource": "*" } ] }
  4. Mengatur rotasi rahasia Secrets Manager

    1. Dengan menggunakan AWS Management Console, lihat Mengatur rotasi otomatis untuk rahasia Secrets Manager AWS menggunakan konsol

      Untuk informasi selengkapnya tentang mengatur jadwal rotasi, lihat Menjadwalkan ekspresi di rotasi Secrets Manager.

    2. Dengan menggunakan AWS CLI, lihat Mengatur rotasi otomatis untuk AWS Secrets Manager menggunakan AWS Command Line Interface