Merotasi kata sandi untuk pengguna secara otomatis - Amazon ElastiCache (Redis) OSS

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

Merotasi kata sandi untuk pengguna secara otomatis

Dengan AWS Secrets Manager, Anda dapat mengganti kredensi hardcode 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 merotasi rahasia secara otomatis sesuai dengan jadwal yang Anda tentukan. Ini memungkinkan Anda mengganti rahasia jangka panjang dengan rahasia jangka pendek, yang membantu mengurangi risiko kompromi secara signifikan.

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

Untuk informasi lebih lanjut tentang AWS Secrets Manager, lihat Apa itu AWS Secrets Manager?

Bagaimana ElastiCache menggunakan rahasia

Dengan Redis OSS 6, ElastiCache (Redis OSS) diperkenalkan Kontrol Akses Berbasis Peran (RBAC) untuk mengamankan cluster Redis OSS. 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, lihat Bagaimana ElastiCache pengguna dikaitkan dengan rahasia.

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

Bagaimana ElastiCache pengguna dikaitkan dengan rahasia

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

{ "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 AWS layanan, untuk menghindari skenario wakil yang membingungkan, AWS merekomendasikan agar Anda menggunakan kunci kondisi aws:SourceAccount global aws:SourceArn dan global. Namun, jika Anda menyertakan kondisi aws:SourceArn dalam kebijakan fungsi rotasi Anda, fungsi rotasi hanya dapat digunakan untuk merotasi rahasia yang ditentukan oleh ARN tersebut. Sebaiknya hanya sertakan kunci konteks aws:SourceAccount agar Anda dapat menggunakan fungsi rotasi untuk beberapa rahasia.

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

Cara membuat ElastiCache pengguna 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 merotasi 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 pengguna, ElastiCache

      4. Pilih Simpan.

    7. Pilih Izin.

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

    9. Fungsi Lambda akan memerlukan izin berikut untuk mengubah 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. Menggunakan AWS Management Console, lihat Mengatur rotasi otomatis untuk AWS rahasia Secrets Manager menggunakan konsol

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

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