

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

# AWS Secrets Manager ベストプラクティス
<a name="best-practices"></a>

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

**Topics**
+ [認証情報やその他の機密情報を に保存する AWS Secrets Manager](#best-practices-store-secrets-safely)
+ [コード内の保護されていないシークレットを検索する](#w2aab9b9)
+ [シークレットの暗号化キーを選択する](#w2aab9c11)
+ [キャッシュを使用してシークレットを取得する](#w2aab9c13)
+ [シークレットのローテーション](#w2aab9c15)
+ [CLI を使用するリスクを軽減する](#w2aab9c17)
+ [シークレットへのアクセスを制限する](#w2aab9c19)
+ [シークレットをレプリケートする](#w2aab9c21)
+ [シークレットを監視する](#w2aab9c23)
+ [プライベートネットワークでインフラストラクチャを実行する](#w2aab9c25)

## 認証情報やその他の機密情報を に保存する AWS Secrets Manager
<a name="best-practices-store-secrets-safely"></a>

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

## コード内の保護されていないシークレットを検索する
<a name="w2aab9b9"></a>

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

Amazon Q は、コードベースをスキャンしてセキュリティの脆弱性やコード品質の問題を確認し、開発サイクル全体でアプリケーションの体制を改善できます。詳細については、「*Amazon Q Developer ユーザーガイド*」の「[Amazon Q でコードをスキャン](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/security-scans.html)」を参照してください。

## シークレットの暗号化キーを選択する
<a name="w2aab9c11"></a>

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

別のアカウントからシークレットにアクセスしたり、暗号化キーにキーポリシーを適用したりするには、カスタマーマネージドキーを使用してシークレットを暗号化します。
+ キーポリシーで、値 `secretsmanager.<region>.amazonaws.com` を [https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-via-service](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-via-service) 条件キーに割り当てます。これにより、キーの使用が Secrets Manager からのリクエストのみに制限されます。
+ キーの使用をさらに制限して、正しいコンテキストを持つ Secrets Manager からのリクエストのみを使用するには、以下を作成して KMS キーを使用する条件として [Secrets Manager 暗号化コンテキスト](https://docs.aws.amazon.com/secretsmanager/latest/userguide/security-encryption.html#security-encryption-encryption-context)のキーまたは値を使用します。
  + IAM ポリシーまたはキーポリシーの[文字列条件演算子](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String)
  + 許可における[権限の制約](https://docs.aws.amazon.com/kms/latest/APIReference/API_GrantConstraints.html)

詳細については、「[でのシークレットの暗号化と復号 AWS Secrets Manager](security-encryption.md)」を参照してください。

## キャッシュを使用してシークレットを取得する
<a name="w2aab9c13"></a>

シークレットを最も効率的に使用するには、サポートされている次のいずれかの Secrets Manager キャッシュコンポーネントを使用してシークレットをキャッシュし、必要な場合にのみ更新することをお勧めします。
+ [クライアント側のキャッシュを使用した Java](retrieving-secrets_cache-java.md)
+ [クライアント側のキャッシュを使用した Python](retrieving-secrets_cache-python.md)
+ [クライアント側のキャッシュを使用した .NET](retrieving-secrets_cache-net.md)
+ [クライアント側のキャッシュを使用した Go](retrieving-secrets_cache-go.md)
+ [クライアント側のキャッシュを使用した Rust](retrieving-secrets_cache-rust.md)
+ [AWS パラメータとシークレット Lambda 拡張機能](retrieving-secrets_lambda.md)
+ [Amazon Elastic Kubernetes Service で AWS Secrets Manager シークレットを使用する](integrate_eks.md)
+ [AWS Secrets Manager エージェントの使用](secrets-manager-agent.md) を使用して、Amazon Elastic Container Service AWS Lambda、Amazon Elastic Kubernetes Service、Amazon Elastic Compute Cloud などの環境間で Secrets Manager からのシークレットの消費を標準化します。

## シークレットのローテーション
<a name="w2aab9c15"></a>

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

## CLI を使用するリスクを軽減する
<a name="w2aab9c17"></a>

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

## シークレットへのアクセスを制限する
<a name="w2aab9c19"></a>

シークレットへのアクセスを制御する IAM ポリシーステートメントでは、[最小特権アクセス](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)の原則を使用します。[IAM ロールとポリシー](auth-and-access_iam-policies.md)、[リソースポリシー](auth-and-access_resource-policies.md)、[属性ベースのアクセス制御 (ABAC)](auth-and-access-abac.md) を使用できます。詳細については、「[の認証とアクセスコントロール AWS Secrets Manager](auth-and-access.md)」を参照してください。

**Topics**
+ [シークレットへの広範なアクセスをブロックする](#iam-contextkeys-blockpublicpolicy)
+ [ポリシーの IP アドレス条件に注意する](#iam-contextkeys-ipaddress)
+ [VPC エンドポイント条件でリクエストを制限する](#iam-contextkeys-vpcendpoint)

### シークレットへの広範なアクセスをブロックする
<a name="iam-contextkeys-blockpublicpolicy"></a>

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

Secrets Manager は、Zelkova の自動推論を使用して、広範なアクセスのためのリソースポリシーを分析します。Zelkova の詳細については、 AWS セキュリティブログの「 が[自動推論 AWS を使用して大規模なセキュリティを実現する方法](https://aws.amazon.com/blogs/security/protect-sensitive-data-in-the-cloud-with-automated-reasoning-zelkova/)」を参照してください。

次の例は、`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 アドレス条件に注意する
<a name="iam-contextkeys-ipaddress"></a>

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

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

### VPC エンドポイント条件でリクエストを制限する
<a name="iam-contextkeys-vpcendpoint"></a>

特定の VPC または VPC エンドポイントからのリクエストに対するアクセスを許可または拒否するには、`aws:SourceVpc` を使用して、指定された VPC からのリクエストに対するアクセスを制限するか、`aws:SourceVpce` を使用して、指定された VPC エンドポイントからのリクエストに対するアクセスを制限します。「[例: アクセス許可と VPC](auth-and-access_resource-policies.md#auth-and-access_examples_vpc)」を参照してください。
+ `aws:SourceVpc` は、指定した VPC からのリクエストにアクセスを制限します。
+ `aws:SourceVpce` は、指定した VPC エンドポイントからのリクエストにアクセスを制限します。

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

「[AWS Secrets Manager VPC エンドポイントの使用](vpc-endpoint-overview.md)」を参照してください。

## シークレットをレプリケートする
<a name="w2aab9c21"></a>

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

## シークレットを監視する
<a name="w2aab9c23"></a>

Secrets Manager では、 AWS ログ記録、モニタリング、通知サービスとの統合を通じてシークレットを監査およびモニタリングできます。詳細については、以下を参照してください。
+ [で AWS Secrets Manager イベントをログに記録する AWS CloudTrail](monitoring-cloudtrail.md)
+ [Amazon CloudWatch AWS Secrets Manager によるモニタリング](monitoring-cloudwatch.md)
+ [を使用してシー AWS Secrets Manager クレットのコンプライアンスをモニタリングする AWS Config](configuring-awsconfig-rules.md)
+ [Secrets Manager のコストを監視する](monitor-secretsmanager-costs.md)
+ [Amazon GuardDuty で脅威を検出する](monitoring-guardduty.md)

## プライベートネットワークでインフラストラクチャを実行する
<a name="w2aab9c25"></a>

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