AWS Secrets Managerベストプラクティス - AWS Secrets Manager

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS Secrets Managerベストプラクティス

Secrets Manager には、独自のセキュリティポリシーを開発および実装する際に考慮が必要ないくつかのセキュリティ機能が用意されています。以下のベストプラクティスは一般的なガイドラインであり、完全なセキュリティソリューションを提供するものではありません。これらのベストプラクティスはお客様の環境に必ずしも適切または十分でない可能性があるため、処方箋ではなく、あくまで有用な検討事項とお考えください。

認証情報やその他の機密情報を に保存するAWS Secrets Manager

Secrets Manager は、セキュリティ体制とコンプライアンスを改善し、機密情報への不正アクセスのリスクを軽減するのに役立ちます。Secrets Manager は、AWS Key Management Service() で所有および保存している暗号化キーを使用して、保管中のシークレットを暗号化しますAWS KMS。シークレットを取得すると、Secrets Manager はシークレットを復号化し、TLS 経由でローカル環境にセキュアに送信します。詳細については、「AWS Secrets Manager シークレットを作成する」を参照してください。

コード内の保護されていないシークレットを検索する

CodeGuru Reviewer は Secrets Manager と統合され、シークレットディテクターを使用して、コード内の保護されていないシークレットを探します。シークレットディテクターは、ハードコードされたパスワード、データベース接続文字列、ユーザー名などを検索します。詳細については、「Amazon CodeGuru Reviewer を使って、コードの中の保護されていないシークレットを見つける」を参照してください。

Amazon Q は、コードベースをスキャンしてセキュリティの脆弱性やコード品質の問題を確認し、開発サイクル全体でアプリケーションの体制を改善できます。詳細については、「Amazon Q Developer ユーザーガイド」の「Amazon Q でコードをスキャン」を参照してください。

シークレットの暗号化キーを選択する

ほとんどの場合、 aws/secretsmanagerAWSマネージドキーを使用してシークレットを暗号化することをお勧めします。この使用には費用は発生しません。

別のアカウントからシークレットにアクセスしたり、暗号化キーにキーポリシーを適用したりするには、カスタマーマネージドキーを使用してシークレットを暗号化します。

  • キーポリシーで、値 secretsmanager.<region>.amazonaws.comkms:ViaService 条件キーに割り当てます。これにより、キーの使用が Secrets Manager からのリクエストのみに制限されます。

  • キーの使用をさらに制限して、正しいコンテキストを持つ Secrets Manager からのリクエストのみを使用するには、以下を作成して KMS キーを使用する条件として Secrets Manager 暗号化コンテキストのキーまたは値を使用します。

詳細については、「でのシークレットの暗号化と復号AWS Secrets Manager」を参照してください。

キャッシュを使用してシークレットを取得する

シークレットを最も効率的に使用するには、サポートされている次のいずれかの Secrets Manager キャッシュコンポーネントを使用してシークレットをキャッシュし、必要な場合にのみ更新することをお勧めします。

シークレットのローテーション

シークレットを長期間変更しないと、シークレットが侵害される可能性が高くなります。Secrets Manager を使用すると、4 時間ごとに自動ローテーションを設定することができます。Secrets Manager には、シングルユーザー交代ユーザー の 2 つのローテーション戦略が用意されています。詳細については、「AWS Secrets Manager シークレットのローテーション」を参照してください。

CLI を使用するリスクを軽減する

を使用してAWSオペレーションAWS CLIを呼び出す場合は、これらのコマンドをコマンドシェルに入力します。ほとんどのコマンドシェルには、ログ記録や最後に入力したコマンドを表示する機能など、シークレットを危険にさらす可能性のある機能があります。AWS CLI を使用して機密情報を入力する前に、必ず を使用してAWS CLIAWS Secrets Managerシークレットを保存するリスクを軽減する を確認してください。

シークレットへのアクセスを制限する

シークレットへのアクセスを制御する IAM ポリシーステートメントでは、最小特権アクセスの原則を使用します。IAM ロールとポリシーリソースポリシー属性ベースのアクセス制御 (ABAC) を使用できます。詳細については、「の認証とアクセスコントロールAWS Secrets Manager」を参照してください。

シークレットへの広範なアクセスをブロックする

アクション PutResourcePolicy を許可するアイデンティティポリシーでは、BlockPublicPolicy: true を使用することをお勧めします。この条件は、ポリシーが広範なアクセスを許可していない場合、ユーザーがリソースポリシーのみをシークレットにアタッチできることを意味します。

Secrets Manager は、Zelkova の自動推論を使用して、広範なアクセスのためのリソースポリシーを分析します。Zelkova の詳細については、 AWSセキュリティブログの「 が自動推論AWSを使用して大規模なセキュリティを実現する方法」を参照してください。

次の例は、BlockPublicPolicy の使用方法を示しています。

JSON
{ "Version":"2012-10-17", "Statement": { "Effect": "Allow", "Action": "secretsmanager:PutResourcePolicy", "Resource": "arn:aws:secretsmanager:us-east-1:123456789012:secret:secretName-AbCdEf", "Condition": { "Bool": { "secretsmanager:BlockPublicPolicy": "true" } } } }

ポリシーの IP アドレス条件に注意する

Secrets Manager へのアクセスを許可または拒否するポリシーステートメントで、IP アドレス条件の演算子または aws:SourceIp 条件キーを指定するときは、注意が必要です。たとえば、企業ネットワーク IP アドレス範囲からのリクエストにAWSアクションを制限するポリシーをシークレットにアタッチすると、企業ネットワークからのリクエストを呼び出す IAM ユーザーとしてのリクエストは期待どおりに機能します。ただし、Lambda 関数でローテーションを有効にする場合など、他の サービスがユーザーに代わってシークレットにアクセスできるようにすると、その関数はAWS内部アドレス空間から Secrets Manager オペレーションを呼び出します。IP アドレスのフィルターがあるポリシーによって影響されたリクエストは失敗します。

また、リクエストが Amazon VPC エンドポイントから送信されている場合、aws:sourceIP 条件キーは効果が低下します。特定の VPC エンドポイントに対するリクエストを制限するには、VPC エンドポイント条件でリクエストを制限する を使用します。

VPC エンドポイント条件でリクエストを制限する

特定の VPC または VPC エンドポイントからのリクエストに対するアクセスを許可または拒否するには、aws:SourceVpc を使用して、指定された VPC からのリクエストに対するアクセスを制限するか、aws:SourceVpce を使用して、指定された VPC エンドポイントからのリクエストに対するアクセスを制限します。「例: アクセス許可と VPC」を参照してください。

  • aws:SourceVpc は、指定した VPC からのリクエストにアクセスを制限します。

  • aws:SourceVpce は、指定した VPC エンドポイントからのリクエストにアクセスを制限します。

これらの条件キーをシークレットポリシーステートメントで使用し、Secrets Manager シークレットへのアクセスを許可または拒否すると、ユーザーに代わってシークレットへのアクセスに Secrets Manager を使用しているサービスへのアクセスを、意図せずに拒否してしまうことがあります。一部のAWSサービスのみが VPC 内のエンドポイントで実行できます。シークレットのリクエストを VPC または VPC エンドポイントに制限すると、サービスに設定されていないサービスからの Secrets Manager への呼び出しは失敗します。

AWS Secrets ManagerVPC エンドポイントの使用」を参照してください。

シークレットをレプリケートする

Secrets Manager は、回復力またはディザスタリカバリ要件を満たすために、シークレットを複数のAWSリージョンに自動的にレプリケートできます。詳細については、「リージョン間でシーAWS Secrets Managerクレットをレプリケートする」を参照してください。

シークレットを監視する

Secrets Manager では、AWSログ記録、モニタリング、通知サービスとの統合を通じてシークレットを監査およびモニタリングできます。詳細については、以下を参照してください。

プライベートネットワークでインフラストラクチャを実行する

パブリックインターネットからアクセスできないプライベートネットワーク上で、できるだけ多くのインフラストラクチャを実行することをお勧めします。VPC と Secrets Manager とのプライベート接続は、インターフェイス VPC エンドポイントを作成すると、確立できます。詳細については、「AWS Secrets ManagerVPC エンドポイントの使用」を参照してください。