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/secretsmanager AWS マネージドキーを使用してシークレットを暗号化することを推奨します。この使用には費用は発生しません。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "secretsmanager:PutResourcePolicy", "Resource": "SecretId", "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 を使用しているサービスへのアクセスを、意図せずに拒否してしまうことがあります。VPC 内で、一部の AWS サービスのみがエンドポイントで実行できます。シークレットのリクエストを VPC または VPC エンドポイントに制限すると、サービスに設定されていないサービスからの Secrets Manager への呼び出しは失敗します。

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

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

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

シークレットをモニタリングする

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

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

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