翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ユーザーのパスワードの自動ローテーション
を使用するとAWS Secrets Manager、コード内のハードコードされた認証情報 (パスワードを含む) を Secrets Manager への API コールに置き換えて、プログラムでシークレットを取得できます。シークレットはそこに存在しないため、これは、あなたのコードを調べている誰かがシークレットを漏らさないようにするのに役立ちます。また、指定したスケジュールに従って自動的にシークレットを更新するように Secrets Manager を設定することができます。これにより、長期のシークレットを短期のシークレットに置き換えることが可能となり、侵害されるリスクが大幅に減少します。
Secrets Manager を使用すると、Secrets Manager が提供するAWS Lambda関数を使用して、ElastiCache for Redis OSS パスワード (シークレット) を自動的にローテーションできます。
詳細についてはAWS Secrets Manager、「 とは」を参照してくださいAWS Secrets Manager。
ElastiCache がシークレットを使用する方法
Valkey 7.2 以降には、Redis OSS 7.0 と同等の機能セットがあります。Redis OSS 6 では、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 ローテーション関数
シークレットマネージャーの自動パスワードローテーションを有効にするには、modify-user API を操作してユーザーのパスワードを更新する Lambda 関数を作成します。
この仕組みについては、「ローテーションの仕組み」を参照してください。
注記
一部のAWSサービスでは、混乱した代理シナリオを避けるために、AWSは aws:SourceArnおよび aws:SourceAccount グローバル条件キーの両方を使用することをお勧めします。ただし、ローテーション関数のポリシーに aws:SourceArn の条件を含めると、その ARN で指定されたシークレットだけをローテーションさせるためにローテーション関数を使用することができます。コンテキストキーのみを含めることをお勧めしますaws:SourceAccount複数のシークレットに対して回転関数を使用できるようにする。
発生する可能性のある問題については、AWS「Secrets Manager ローテーションのトラブルシューティング」を参照してください。
ElastiCache ユーザーを作成してシークレットマネージャーに関連付ける方法
以下の手順は、ユーザーを作成してシークレットマネージャーに関連付ける方法を示しています。
非アクティブユーザーの作成
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 userWindows の場合:
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 マネジメントコンソールし、https://console.aws.amazon.com/lambda/
で Lambda コンソールを開きます。 ナビゲーションパネルで [Functions] (関数) を選択し、作成した関数を選択します。関数名の左側のチェックボックスではなく、関数名を選択します。
[設定] タブを選択します。
[General configuration] (一般設定) で、[Edit] (編集) を選択し、[Timeout] (タイムアウト) を 12 分以上に設定します。
[保存] を選択します。
[Environment variables] (環境変数) を選択し、以下を設定します。
SECRETS_MANAGER_ENDPOINT – https://secretsmanager.
REGION.amazonaws.com.rproxy.govskope.caSECRET_ARN – ステップ 2 で作成したシークレットの Amazon リソースネーム (ARN)。
USER_NAME – ElastiCache ユーザーのユーザー名、
[保存] を選択します。
[Permissions] (許可) を選択します。
[Execution role] (実行ロール) で、IAM コンソールに表示する Lambda 関数ロールの名前を選択します。
Lambda 関数でユーザーを変更してパスワードを設定するには、次のアクセス許可が必要です。
ElastiCache
Secrets Manager
シークレットマネージャーのシークレットローテーションを設定する
の使用についてはAWS マネジメントコンソール、「コンソールを使用したAWS Secrets Manager シークレットの自動ローテーションの設定」を参照してください。
ローテーションのスケジュール設定の詳細については、「シークレットマネージャーのローテーションでのスケジュール式」を参照してください。
の使用についてはAWS CLI、「AWS Secrets Managerを使用するための自動ローテーションの設定」を参照してください。AWS Command Line Interface