翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ユーザーのパスワードの自動ローテーション
を使用すると AWS Secrets Manager、コード内のハードコードされた認証情報 (パスワードを含む) を Secrets Manager へのAPI呼び出しに置き換えて、プログラムでシークレットを取得できます。シークレットはそこに存在しないため、これは、あなたのコードを調べている誰かがシークレットを漏らさないようにするのに役立ちます。また、指定したスケジュールに従って自動的にシークレットを更新するように Secrets Manager を設定することができます。これにより、長期のシークレットを短期のシークレットに置き換えることが可能となり、侵害されるリスクが大幅に減少します。
Secrets Manager を使用すると、Secrets Manager が提供する AWS Lambda 関数を使用して、Redis OSSパスワード (つまり、シークレット) ElastiCache の を自動的にローテーションできます。
詳細については AWS Secrets Manager、「 とは」を参照してください AWS Secrets Manager。
がシークレット ElastiCache を使用する方法
Valkey 7.2 以降には、Redis 7OSS.0 と同等の機能セットがあります。Redis OSS6 ElastiCache では、Valkey または Redis OSSクラスターロールベースのアクセスコントロール (RBAC)を保護するために導入されました。この機能により、実行できるコマンドとアクセスできるキーに関して特定の接続を制限できます。ではRBAC、顧客がパスワードを使用してユーザーを作成する間、パスワード値はプレーンテキストで手動で入力する必要があり、オペレーターに表示されます。
シークレットマネージャーを使用すると、アプリケーションはパスワードを手動で入力してアプリケーションの設定に保存するのではなく、シークレットマネージャーからパスワードを取得します。これを行う方法については、「 ElastiCache ユーザーをシークレットに関連付ける方法」を参照してください。
シークレットの使用にはコストが発生します。料金情報については、「AWS Systems Manager の料金
ElastiCache ユーザーをシークレットに関連付ける方法
シークレットマネージャーは、関連するユーザーのリファレンスをシークレットの SecretString
フィールドに保存します。 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 }
Lambda ローテーション関数
Secrets Manager の自動パスワードローテーションを有効にするには、変更ユーザーとやり取りAPIしてユーザーのパスワードを更新する Lambda 関数を作成します。
この仕組みについては、「ローテーションの仕組み」を参照してください。
注記
一部の AWS サービスでは、混乱した代理シナリオを避けるために、 AWS は aws:SourceArn
と aws:SourceAccount
グローバル条件キーの両方を使用することをお勧めします。ただし、ローテーション関数ポリシーに aws:SourceArn
条件を含めると、ローテーション関数はその で指定されたシークレットのローテーションにのみ使用できますARN。コンテキストキーのみを含めることをお勧めしますaws:SourceAccount
複数のシークレットに対して回転関数を使用できるようにする。
問題が発生した場合は、AWS 「Secrets Manager のローテーションのトラブルシューティング」を参照してください。
ElastiCache ユーザーを作成して Secrets Manager に関連付ける方法
以下の手順は、ユーザーを作成してシークレットマネージャーに関連付ける方法を示しています。
非アクティブユーザーの作成
Linux、macOS、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
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
次のようなレスポンスが表示されます。
{ "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" }
シークレットを作成する
Linux、macOS、Unix の場合:
aws secretsmanager create-secret \ --name production/ec/user1 \ --secret-string \ '{ "user_arn": "arn:aws:elasticache:us-east-1:123456xxxx:user:user1", "username":"user1" }'
Windows の場合:
aws secretsmanager create-secret ^ --name production/ec/user1 ^ --secret-string ^ '{ "user_arn": "arn:aws:elasticache:us-east-1:123456xxxx:user:user1", "username":"user1" }'
次のようなレスポンスが表示されます。
{ "ARN": "arn:aws:secretsmanager:us-east-1:123456xxxx:secret:production/ec/user1-eaFois", "Name": "production/ec/user1", "VersionId": "aae5b963-1e6b-4250-91c6-ebd6c47d0d95" }
パスワードをローテーションするように Lambda 関数を設定する
にサインイン AWS Management Console し、 で Lambda コンソールを開きます。 https://console.aws.amazon.com/lambda/
ナビゲーションパネルで [Functions] (関数) を選択し、作成した関数を選択します。関数名の左側のチェックボックスではなく、関数名を選択します。
[設定] タブを選択します。
[General configuration] (一般設定) で、[Edit] (編集) を選択し、[Timeout] (タイムアウト) を 12 分以上に設定します。
[Save] を選択します。
[Environment variables] (環境変数) を選択し、以下を設定します。
SECRETS_MANAGER_ENDPOINT – https://secretsmanager.
REGION
.amazonaws.com.rproxy.goskope.comSECRET_ARN – ステップ 2 で作成したシークレットの Amazon リソースネーム (ARN)。
USER_NAME – ElastiCache ユーザーのユーザー名、
[Save] を選択します。
[Permissions] (許可) を選択します。
実行ロールで、IAMコンソールに表示する Lambda 関数ロールの名前を選択します。
Lambda 関数でユーザーを変更してパスワードを設定するには、次のアクセス許可が必要です。
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": "*" } ] }
シークレットマネージャーのシークレットローテーションを設定する
の使用については AWS Management Console、「コンソールを使用した AWS Secrets Manager シークレットの自動ローテーションの設定」を参照してください。
ローテーションのスケジュール設定の詳細については、「シークレットマネージャーのローテーションでのスケジュール式」を参照してください。
の使用については AWS CLI、「 AWS Secrets Manager を使用した の自動ローテーションの設定 AWS Command Line Interface」を参照してください。