翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS セキュリティエージェントのカスタマーマネージドキー
デフォルトでは、 AWS Security Agent はマネージド暗号化キーを使用して保管中のすべてのデータを暗号化 AWSします。オプションで、 AWS Key Management Service (AWS KMS) のカスタマーマネージドキーを使用してデータを暗号化し、リソースを保護する暗号化キーを完全に制御できます。
AWS セキュリティエージェントは、リソースレベルのカスタマーマネージドキーをサポートします。エージェントスペースや統合などの最上位リソースを作成するときは、KMS キーを指定して、そのリソースとそのサブリソースに属するすべてのデータを暗号化できます。例えば、エージェントスペースの作成時にカスタマーマネージドキーを指定すると、エージェントスペース設定、侵入テスト設定、ジョブ、実行の詳細、セキュリティ検出結果、検出されたエンドポイント、スクリーンショットなど、そのエージェントスペースに関連付けられたすべてのデータが暗号化されます。S3 バケット、CloudWatch Logs ロググループ、Secrets Manager シークレットなど、独自のカスタマーマネージドキーで既に暗号化されている AWS リソースを指定することもできます。必要な KMS アクセス許可については、「」を参照してください必要な KMS アクセス許可。
カスタマーマネージドキーの仕組み
AWS セキュリティエージェントは AWS KMS 階層キーリングを使用して、カスタマーマネージドキーでデータを暗号化します。リソースの作成時に KMS キーを指定すると、サービスは KMS キーで保護されたブランチキーを作成し、Amazon DynamoDB ベースのキーストアに保存します。暗号化オペレーションごとに、階層キーリングはアクティブなブランチキーから一意のラッピングキーを取得し、リクエストごとに一意のデータ暗号化キーを暗号化します。
階層キーリングには次の利点があります。
-
リソースごとの暗号化スコープ – 各最上位リソースには独自のブランチキーがあるため、異なるリソースのデータは別々のキーで暗号化されます。
-
自動キーローテーション – AWS セキュリティエージェントはブランチキーを定期的にローテーションします。ローテーション後、新しいデータは新しいブランチキーバージョンで暗号化され、古いバージョンは以前に暗号化されたデータを復号するために保持されます。
暗号化コンテキスト
AWS セキュリティエージェントは、KMS キーを使用するすべての暗号化オペレーションで暗号化コンテキストを使用します。暗号化コンテキストは、暗号化オペレーションに追加の認証データを提供するシークレット以外のキーと値のペアのセットです。
暗号化コンテキストキーは の形式に従います。ここでaws:securityagent:_<resource-type>_、 <resource-type> は暗号化されるリソースのタイプです (例: agent-spaceまたは integration)。値は、リソースの Amazon リソースネーム (ARN) です。
注記
統合の場合、暗号化コンテキストキーには aws-crypto-ec: プレフィックスが含まれ、 の形式になりますaws-crypto-ec:aws:securityagent:integration。
暗号化コンテキストを使用して、KMS キーポリシーを特定のリソースタイプに絞り込むことができます。詳細については、「必要な KMS アクセス許可」を参照してください。
デフォルト暗号化
カスタマーマネージドキーを指定せずにリソースを作成すると、 AWS Security Agent は基盤となるストレージサービス (Amazon DynamoDB AWSおよび Amazon S3) が提供するマネージド暗号化キーを使用してリソースを暗号化します。デフォルトの暗号化に追加の設定は必要ありません。
アプリケーションのデフォルト KMS キー
デフォルトの KMS キーはアプリケーションレベルで設定できます。デフォルトの KMS キーが設定されている場合、リソースの作成時に KMS キーを明示的に指定しない場合、 AWS Security Agent はそれを新しいエージェントスペースと統合のフォールバックとして使用します。
デフォルトの KMS キーを設定するには、CLI または SDK を使用してアプリケーションを作成または更新するときに AWS defaultKmsKeyIdパラメータを指定します。コンソールでは、アプリケーションのセットアップ中にデフォルトの KMS キーを指定するように求められます。
リソースの作成時に KMS キーを明示的に指定すると、アプリケーションレベルのデフォルトよりも優先されます。
前提条件
カスタマーマネージドキーを設定する前に、次の前提条件を満たしてください。
-
KMS で対称暗号化 KMS AWS キーを作成します。キーは次の要件を満たしている必要があります。
-
キータイプ: 対称
-
キーの使用方法: 暗号化と復号
-
キー仕様:
SYMMETRIC_DEFAULT -
キーの状態: 有効
手順については、「 Key Management Service https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.htmlデベロッパーガイド」の「キーの作成」を参照してください。 AWS
-
-
KMS キーポリシーと IAM ポリシーを設定して、 AWS セキュリティエージェントに必要なアクセス許可を付与します。詳細については、「必要な KMS アクセス許可」を参照してください。
必要な KMS アクセス許可
AWS セキュリティエージェントには、次の 2 つのシナリオで KMS アクセス許可が必要です。
-
AWS セキュリティエージェント内でのデータの暗号化 – エージェントスペースまたは統合にカスタマーマネージドキーを指定する場合、サービスにはデータの暗号化オペレーションにそのキーを使用するためのアクセス許可が必要です。
-
CMK で暗号化された AWS リソースの使用 – カスタマーマネージドキー (S3 バケット、CloudWatch Logs ロググループ、Secrets Manager シークレットなど) で暗号化された AWS リソースを提供する場合、サービスには、これらのキーを使用して暗号化されたリソースにアクセスするためのアクセス許可が必要です。
AWS セキュリティエージェントは、オペレーションに応じて異なる ID を使用して KMS キーにアクセスします。
-
AWS マネジメントコンソールオペレーション – 管理者が AWS マネジメントコンソールでリソースを作成または管理する (エージェントスペースの作成やアプリケーションの更新など) 場合、サービスは管理者ロールを使用して KMS AWS を呼び出します。
-
ウェブアプリケーションオペレーション – IAM Identity Center ユーザーが AWS Security Agent ウェブアプリケーションを介してデータにアクセスする場合 (侵入テスト結果の表示や侵入テストの開始など)、サービスは AWS Security Agent のセットアップ中に作成されたアプリケーションロールを使用して KMS AWS を呼び出します。
-
顧客提供のリソースへのアクセス – サービスは、侵入テスト中に顧客提供の AWS リソース (S3 バケット、CloudWatch Logs ロググループ、Secrets Manager シークレットなど) にアクセスすると、侵入テストサービスロールを使用して KMS AWS を呼び出します。
-
非同期ワークフロー – ユーザーセッションの外部で実行されるバックグラウンドオペレーション (侵入テストの実行、コードレビュー処理、ブランチキーローテーションなど) の場合、サービスは独自のサービスプリンシパル (
securityagent.amazonaws.com) を使用してユーザーに代わって KMS AWS を呼び出します。
以下のセクションでは、各 ID に必要なアクセス許可について説明します。
キーポリシー
KMS キーポリシーは、暗号化オペレーションにキーを使用するアクセス許可を AWS セキュリティエージェントに付与する必要があります。必要なキーポリシーステートメントは、暗号化するリソースタイプと、サービスに提供する CMK 暗号化 AWS リソースによって異なります。
エージェントスペースのキーポリシー
次のキーポリシーは、侵入テスト結果やスクリーンショットなど、エージェントスペースデータを暗号化および復号するために必要なアクセス許可を AWS セキュリティエージェントに付与します。
ポリシーで次のプレースホルダー値を置き換えます。
-
111122223333– AWS アカウント ID -
MyRole– コンソールで AWS セキュリティエージェントの管理に使用する IAM ロール -
MyApplicationRole– AWS Security Agent のセットアップ中に作成されたアプリケーションロール -
us-east-1– AWS セキュリティエージェントを使用する AWS リージョン
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowKeyMetadataValidationForApplicationAndAgentSpaces", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyRole" }, "Action": [ "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "securityagent.us-east-1.amazonaws.com" } } }, { "Sid": "AllowUseOfHierarchicalKeyringForAgentSpaces", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyRole" }, "Action": [ "kms:GenerateDataKeyWithoutPlaintext", "kms:ReEncryptTo", "kms:ReEncryptFrom", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:securityagent:agent-space": "arn:aws:securityagent:us-east-1:111122223333:agent-space/*" }, "StringEquals": { "kms:ViaService": "securityagent.us-east-1.amazonaws.com" } } }, { "Sid": "AllowSynchronousDataAccessForAgentSpaces", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyApplicationRole" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:securityagent:agent-space": "arn:aws:securityagent:us-east-1:111122223333:agent-space/*" }, "StringEquals": { "kms:ViaService": "securityagent.us-east-1.amazonaws.com" } } }, { "Sid": "AllowAsynchronousDataAccessForAgentSpaces", "Effect": "Allow", "Principal": { "Service": "securityagent.amazonaws.com" }, "Action": [ "kms:GenerateDataKeyWithoutPlaintext", "kms:Decrypt", "kms:ReEncryptTo", "kms:ReEncryptFrom" ], "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:securityagent:agent-space": "arn:aws:securityagent:us-east-1:111122223333:agent-space/*" }, "ArnLike": { "aws:SourceArn": "arn:aws:securityagent:us-east-1:111122223333:agent-space/*" } } }, { "Sid": "AllowAsynchronousDataAccessForCodeRemediation", "Effect": "Allow", "Principal": { "Service": "securityagent.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*" } ] }
重要
ブランチキーをローテーションするには、KMS キーポリシーが AWS Security Agent サービスプリンシパル (securityagent.amazonaws.com) に kms:GenerateDataKeyWithoutPlaintext、kms:ReEncryptTo、および アクセスkms:ReEncryptFrom許可を付与する必要があります。そうしないと、ブランチキーのローテーションは失敗します。必要なアクセス許可の詳細については、「ブランチキーのローテーション」を参照してください。
統合のキーポリシー
次のキーポリシーは、コードレビューの結果を含む統合データの暗号化と復号化に必要なアクセス許可を AWS セキュリティエージェントに付与します。
ポリシーで次のプレースホルダー値を置き換えます。
-
111122223333– AWS アカウント ID -
MyRole– コンソールで AWS セキュリティエージェントの管理に使用する IAM ロール -
us-east-1– AWS セキュリティエージェントを使用する AWS リージョン
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowKeyAccessValidationForIntegrations", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyRole" }, "Action": [ "kms:GenerateDataKeyWithoutPlaintext", "kms:Decrypt", "kms:Encrypt", "kms:ReEncryptTo", "kms:ReEncryptFrom" ], "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws-crypto-ec:aws:securityagent:integration": "arn:aws:securityagent:us-east-1:111122223333:integration/*" }, "StringEquals": { "kms:ViaService": "securityagent.us-east-1.amazonaws.com" } } }, { "Sid": "AllowKeyMetadataValidationForIntegrations", "Effect": "Allow", "Principal": { "Service": "securityagent.amazonaws.com" }, "Action": "kms:DescribeKey", "Resource": "*" }, { "Sid": "AllowAsynchronousDataAccessForIntegrations", "Effect": "Allow", "Principal": { "Service": "securityagent.amazonaws.com" }, "Action": [ "kms:GenerateDataKeyWithoutPlaintext", "kms:Decrypt", "kms:Encrypt", "kms:ReEncryptTo", "kms:ReEncryptFrom" ], "Resource": "*", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:securityagent:us-east-1:111122223333:integration/*" }, "StringLike": { "kms:EncryptionContext:aws-crypto-ec:aws:securityagent:integration": "arn:aws:securityagent:us-east-1:111122223333:integration/*" } } } ] }
注記
複数のリソースタイプに同じ KMS キーを使用する場合は、エージェントスペース、統合、セキュリティ要件パックのキーポリシーステートメントを 1 つのキーポリシーに結合できます。
セキュリティ要件パックのキーポリシー
次のキーポリシーは、 AWS セキュリティエージェントにセキュリティ要件パックデータの暗号化と復号に必要なアクセス許可を付与します。セキュリティ要件パックはウェブアプリケーションロールを使用しません。ポリシーは 2 つのアクセスパスを使用します。
-
同期パス – API を呼び出すと、サービスは転送された認証情報を使用してユーザーに代わって (
kms:ViaService条件を使用して) KMS AWS を呼び出します。 -
非同期パス – パックを使用できる非同期オペレーションの場合、サービスは独自のサービスプリンシパルを使用して KMS AWS を直接呼び出します。
ポリシーで次の値を置き換えます。
-
111122223333– AWS アカウント ID -
MyRole– セキュリティ要件パックオペレーションの呼び出しに使用する IAM ロール -
us-east-1– AWS セキュリティエージェントを使用する AWS リージョン
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowKeyMetadataValidation", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyRole" }, "Action": [ "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "securityagent.us-east-1.amazonaws.com" } } }, { "Sid": "AllowUseOfHierarchicalKeyringForSecurityPacks", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyRole" }, "Action": [ "kms:GenerateDataKeyWithoutPlaintext", "kms:ReEncryptTo", "kms:ReEncryptFrom", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "securityagent.us-east-1.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:securityagent:security-requirement-pack": "arn:aws:securityagent:us-east-1:111122223333:security-requirement-pack/*" } } }, { "Sid": "AllowAsynchronousDataAccessForSecurityPacks", "Effect": "Allow", "Principal": { "Service": "securityagent.amazonaws.com" }, "Action": [ "kms:GenerateDataKeyWithoutPlaintext", "kms:Decrypt", "kms:ReEncryptTo", "kms:ReEncryptFrom" ], "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:securityagent:security-requirement-pack": "arn:aws:securityagent:us-east-1:111122223333:security-requirement-pack/*" }, "ArnLike": { "aws:SourceArn": "arn:aws:securityagent:us-east-1:111122223333:security-requirement-pack/*" } } } ] }
ポリシーには 3 つのステートメントが含まれています。
-
AllowKeyMetadataValidation – リソースの作成時に CMK を指定するときに、
kms:DescribeKeyAWS セキュリティエージェントがカスタマーマネージドキーが存在し、有効になっており、対称暗号化を使用していることを検証できるようにします。kms:ViaService条件を使用して、通話が サービスを通じて発信されるようにします。 -
AllowUseOfHierarchicalKeyringForSecurityPacks – 階層キーリングオペレーションの権限
kms:GenerateDataKeyWithoutPlaintext(新しいブランチキーの作成)kms:ReEncryptTo、権限kms:ReEncryptFrom(既存のブランチキーのローテーション)、権限kms:Decrypt(既存のブランチキーの取得) を付与します。これらのオペレーションは、同期パスを介して転送された認証情報を使用し、暗号化コンテキスト条件によってセキュリティ要件パックリソースに限定されます。 -
AllowAsynchronousDataAccessForSecurityPacks – 発信者の認証情報が利用できない場合
kms:GenerateDataKeyWithoutPlaintext、非同期オペレーションのためにkms:Decrypt、kms:ReEncryptTo、、および を AWS セキュリティエージェントサービスプリンシパルkms:ReEncryptFromに付与します。
エージェントスペースキーポリシーとは異なり、セキュリティ要件パックポリシーにはウェブアプリケーションロールプリンシパルは含まれません。セキュリティ要件パックには、 AWS セキュリティエージェントのウェブアプリケーションではなく、管理者ロールを使用して AWS マネジメントコンソールからアクセスします。すべての同期オペレーションでは、単一の発信者ロールが使用されます ( 経由kms:ViaService)。
注記
エージェントスペースとセキュリティ要件パックの両方に同じ KMS キーを使用する場合は、両方のセクションのキーポリシーステートメントを 1 つのキーポリシーに結合できます。
CMK で暗号化された AWS リソースのキーポリシー
カスタマーマネージドキーで暗号化された AWS リソースを AWS セキュリティエージェントに提供する場合は、各リソースの KMS キーのキーポリシーを更新して、必要なアクセス許可を付与する必要があります。これは、次のリソースに適用されます。
-
S3 バケット – カスタマーマネージドキー (SSE-KMS) で暗号化された S3 バケットから学習リソースを提供する場合、キーポリシーは、侵入テストサービスロールがオブジェクトを復号することを許可する必要があります。
-
Secrets Manager シークレット – 侵入テスト認証情報がカスタマーマネージドキーで暗号化された Secrets Manager シークレットに保存されている場合、キーポリシーは侵入テストサービスロールにそれらのシークレットの復号を許可する必要があります。ウェブアプリケーションがユーザーに代わってシークレットを作成する場合、キーポリシーはアプリケーションロールにそれらのシークレットの暗号化を許可する必要があります。
-
CloudWatch Logs ロググループ – 侵入テスト実行ログの保存に使用される CloudWatch Logs ロググループがカスタマーマネージドキーで暗号化されている場合、キーポリシーは、CloudWatch Logs がサービスロールを介して KMS キーを検証し、CloudWatch Logs サービスプリンシパルが暗号化オペレーションを実行することを許可する必要があります。
重要
AWS セキュリティエージェントは、ユーザーに代わって CloudWatch Logs ロググループと Secrets Manager シークレットを作成することもできます。KMS キーポリシーを設定するときは、これらのサービス作成リソースに対応するステートメントも含めます。
次のキーポリシーステートメントは、CMK で暗号化されたリソースに必要なアクセス許可を付与します。設定に適用されるステートメントのみを含めます。リソースがエージェントスペースに指定したのと同じ KMS キーを使用している場合は、これらのステートメントをそのキーのポリシーに追加します。リソースが別の KMS キーを使用している場合は、代わりにこれらのステートメントをそのキーのポリシーに追加します。
ポリシーで次のプレースホルダー値を置き換えます。
-
111122223333– AWS アカウント ID -
MyApplicationRole– AWS Security Agent のセットアップ中に作成されたアプリケーションロール -
MyPenTestServiceRole– 侵入テストサービスロール -
us-east-1– AWS セキュリティエージェントを使用する AWS リージョン
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowKmsKeyAccessForCreatingSecrets", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyApplicationRole" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceAccount": "111122223333" }, "StringLike": { "kms:ViaService": "secretsmanager.*.amazonaws.com", "kms:EncryptionContext:SecretARN": "arn:aws:secretsmanager:us-east-1:111122223333:secret:*" } } }, { "Sid": "AllowKmsKeyDecryptionForS3Objects", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyPenTestServiceRole" }, "Action": [ "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceAccount": "111122223333" }, "StringLike": { "kms:ViaService": "s3.*.amazonaws.com", "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::YOUR-BUCKET-NAME*" } } }, { "Sid": "AllowKmsKeyDecryptionForSecretsManagerSecrets", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyPenTestServiceRole" }, "Action": [ "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceAccount": "111122223333" }, "StringLike": { "kms:ViaService": "secretsmanager.*.amazonaws.com", "kms:EncryptionContext:SecretARN": "arn:aws:secretsmanager:us-east-1:111122223333:secret:YOUR-SECRET-NAME*" } } }, { "Sid": "AllowKmsKeyValidationForCloudWatchLogsLogGroups", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyPenTestServiceRole" }, "Action": [ "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceAccount": "111122223333" }, "StringLike": { "kms:ViaService": "logs.*.amazonaws.com" } } }, { "Sid": "AllowKmsKeyAccessForCloudWatchLogsLogGroups", "Effect": "Allow", "Principal": { "Service": "logs.us-east-1.amazonaws.com" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceAccount": "111122223333" }, "StringLike": { "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:us-east-1:111122223333:log-group:YOUR-LOG-GROUP-NAME*" } } } ] }
注記
-
AllowKmsKeyDecryptionForS3Objectsステートメントは、カスタマーマネージドキーで暗号化された S3 バケットから学習リソースを提供する場合にのみ必要です。S3 の SSE-KMS の設定の詳細については、「SSE-KMS によるデータの保護」を参照してください。 -
AllowKmsKeyDecryptionForSecretsManagerSecretsステートメントは、侵入テスト認証情報がカスタマーマネージドキーで暗号化された Secrets Manager シークレットに保存されている場合にのみ必要です。サービスロールは、侵入テスト中にシークレットを復号化するためのアクセスが必要です。シークレット暗号化の詳細については、Secrets Manager の「シークレットの暗号化と復号」を参照してください。 -
AllowKmsKeyValidationForCloudWatchLogsLogGroupsステートメントは、CloudWatch Logskms:DescribeKeyがロググループに関連付けるときにサービスロールを介して KMS キーを検証できるように、サービスロールを付与します。 -
AllowKmsKeyAccessForCreatingSecretsステートメントは、ウェブアプリケーションがカスタマーマネージドキーを使用してユーザーに代わって Secrets Manager シークレットを作成する場合に必要です。KMS キーを使用してシークレットを暗号化kms:Decryptするには、アプリケーションロールにkms:GenerateDataKeyと が必要です。 -
この
AllowKmsKeyAccessForCloudWatchLogsLogGroupsステートメントは、CloudWatch Logs サービスプリンシパル (logs.us-east-1.amazonaws.com) に、ログデータの暗号化と復号に必要なアクセス許可を付与します。このステートメントは、既存のロググループを指定しない場合に AWS 、セキュリティエージェントがユーザーに代わってロググループを作成する場合にも必要です。詳細については、「KMS を使用して CloudWatch Logs AWS のログデータを暗号化する」を参照してください。 -
複数のリソースが同じ KMS キーを共有する場合、ステートメントを 1 つのキーポリシーに結合できます。
管理者ロール
管理者ロール (コンソールで AWS セキュリティエージェントの管理に使用する IAM ロール) に追加の IAM ポリシーは必要ありません。
アプリケーションロール
KMS キーポリシーに加えて、 AWS セキュリティエージェントのセットアップ時に指定されたアプリケーションロールに次の IAM ポリシーをアタッチします。このポリシーは、エージェントスペースデータの暗号化と復号、 AWS Secrets Manager でのシークレットの作成にカスタマーマネージドキーを使用するアクセス許可をロールに付与します。
ポリシーで次のプレースホルダー値を置き換えます。
-
111122223333– AWS アカウント ID -
us-east-1– AWS セキュリティエージェントを使用する AWS リージョン -
の KMS キー ARNs
Resource— KMS キーの ARNs
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowSynchronousDataAccessForAgentSpaces", "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": [ "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890cd" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "111122223333", "kms:ViaService": "securityagent.us-east-1.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:securityagent:agent-space": "arn:aws:securityagent:us-east-1:111122223333:agent-space/*" } } }, { "Sid": "AllowKmsKeyAccessForCreatingSecrets", "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": [ "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890cd" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "111122223333" }, "StringLike": { "kms:ViaService": "secretsmanager.*.amazonaws.com", "kms:EncryptionContext:SecretARN": "arn:aws:secretsmanager:us-east-1:111122223333:secret:*" } } } ] }
注記
アプリケーションロールは、指定した IAM ロール、または AWS セキュリティエージェントのセットアップ中にコンソールが作成する IAM ロールです。ウェブアプリケーションはこのロールを引き受けて、侵入テストの実行ログを取得し、ユーザーに代わって Secrets Manager シークレットを作成します。
-
AllowKmsKeyAccessForCreatingSecretsステートメントは、ペネトレーションテスト用の認証リソースを設定し、既存のシークレットを指定する代わりに認証情報を直接入力する場合に必要です。ウェブアプリケーションはユーザーに代わってシークレットを作成し、アプリケーションロールは、エージェントスペースに指定されたカスタマーマネージドキーでシークレットを暗号化するために、このステートメントのアクセス許可を必要とします。エージェントスペースに使用される KMS キーと一致するように、このステートメントのResourceARN を更新します。 ARNs
サービスロール
ペネトレーションテスト中、 AWS Security Agent は、 AWS リソースにアクセスするためのペネトレーションテストサービスロールを引き受けます。これらのリソースのいずれかがカスタマーマネージドキーで暗号化されている場合は、対応する KMS キーを使用するためのアクセス許可をサービスロールに付与する必要があります。これは、次のリソースに適用されます。
-
S3 バケット – カスタマーマネージドキーで暗号化された S3 バケットから学習リソース (API ドキュメント、脅威モデル、ソースコードなど) を提供する場合、サービスロールには、そのバケット内のオブジェクトを復号するためのアクセス許可が必要です。S3 の SSE-KMS の設定の詳細については、「SSE-KMS によるデータの保護」を参照してください。
-
Secrets Manager シークレット – 侵入テスト認証情報がカスタマーマネージドキーで暗号化された Secrets Manager シークレットに保存されている場合、サービスロールにはそれらのシークレットを復号するためのアクセス許可が必要です。シークレット暗号化の詳細については、Secrets Manager の「シークレットの暗号化と復号」を参照してください。
-
CloudWatch Logs ロググループ – 侵入テスト実行ログの保存に使用される CloudWatch Logs ロググループがカスタマーマネージドキー (ユーザーに代わって AWS Security Agent によって作成されたロググループを含む) で暗号化されている場合、サービスロールにはキーを検証する
kms:DescribeKeyアクセス許可が必要です。CloudWatch Logs サービスプリンシパルは、ログデータの実際の暗号化と復号を処理し、これらのアクセス許可はキーポリシーを通じて付与されます (「」を参照キーポリシー)。ログデータの暗号化の詳細については、「KMS を使用して CloudWatch Logs AWS でログデータを暗号化する」を参照してください。
重要
エージェントスペースに指定したものとは異なる KMS キーを使用してこれらのリソースを暗号化する場合は、侵入テスト中にサービスロールがアクセスするリソースを保護する KMS キーごとにサービスロールのアクセス許可を付与する必要があります。
次の IAM ポリシーをペネトレーションテストサービスロールにアタッチします。設定に適用されるステートメントのみを含めます。
ポリシーで次のプレースホルダー値を置き換えます。
-
111122223333– AWS アカウント ID -
us-east-1– AWS セキュリティエージェントを使用する AWS リージョン -
の KMS キー ARNs
Resource– 各リソースの暗号化に使用されるカスタマーマネージドキーの ARNs
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowKmsAccessForEncryptedS3Buckets", "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": [ "arn:aws:kms:us-east-1:111122223333:key/EXAMPLE-S3-KEY-ID" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "111122223333" }, "StringLike": { "kms:ViaService": "s3.*.amazonaws.com", "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::YOUR-BUCKET-NAME*" } } }, { "Sid": "AllowKmsAccessForEncryptedSecrets", "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": [ "arn:aws:kms:us-east-1:111122223333:key/EXAMPLE-SECRETS-KEY-ID" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "111122223333" }, "StringLike": { "kms:ViaService": "secretsmanager.*.amazonaws.com", "kms:EncryptionContext:SecretARN": "arn:aws:secretsmanager:us-east-1:111122223333:secret:YOUR-SECRET-NAME*" } } }, { "Sid": "AllowKmsKeyValidationForCloudWatchLogsLogGroups", "Effect": "Allow", "Action": [ "kms:DescribeKey" ], "Resource": [ "arn:aws:kms:us-east-1:111122223333:key/EXAMPLE-CLOUDWATCH-LOGS-KEY-ID" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "111122223333" }, "StringLike": { "kms:ViaService": "logs.*.amazonaws.com" } } } ] }
注記
-
AllowKmsAccessForEncryptedS3Bucketsステートメントは、カスタマーマネージドキーで暗号化された S3 バケットから学習リソースを提供する場合にのみ必要です。S3 バケットの暗号化に使用される KMS キーと一致するようにResourceARN を更新し、バケット名と一致するようにkms:EncryptionContext:aws:s3:arn値を更新します。 -
AllowKmsAccessForEncryptedSecretsステートメントは、侵入テスト認証情報がカスタマーマネージドキーで暗号化された Secrets Manager シークレットに保存されている場合にのみ必要です。シークレットの暗号化に使用される KMS キーと一致するようにResourceARN を更新し、シークレット名と一致するようにkms:EncryptionContext:SecretARN値を更新します。 -
AllowKmsKeyValidationForCloudWatchLogsLogGroupsステートメントは、CloudWatch Logs ロググループが、ユーザーに代わって AWS Security Agent によって作成されたロググループなど、カスタマーマネージドキーで暗号化されている場合にのみ必要です。ロググループの暗号化に使用される KMS キーと一致するようにResourceARN を更新します。 -
複数のリソースが同じ KMS キーを共有する場合、 ステートメントを組み合わせて、共有キー ARN を
Resourceフィールドに一度一覧表示できます。
カスタマーマネージドキーを使用してリソースを作成する
AWS セキュリティエージェントを設定するとき、または個々のリソースを作成するときに、カスタマーマネージドキーを指定できます。KMS キーは、そのリソースとそのサブリソースに属するすべてのデータを暗号化します。
セットアップ中にデフォルトの KMS キーを設定する (コンソール)
デフォルトの KMS キーは、 AWS セキュリティエージェントの初期設定時に設定できます。このキーは、別のキーを指定しない限り、新しいエージェントスペースと統合のデフォルトとして使用されます。
-
AWS セキュリティエージェントのセットアップページで、暗号化 - オプションセクションを展開します。
-
暗号化設定をカスタマイズ (アドバンスド) を選択します。
-
AWS KMS キーを選択するには、アカウントから KMS キーを選択するか、KMS キー ARN を入力します。
-
残りのセットアップステップを完了し、AWS セキュリティエージェントのセットアップを選択します。
AWS セキュリティエージェントは KMS キーを検証して、KMS キーが存在し、有効になっており、対称暗号化を使用していることを確認します。検証が失敗した場合、セットアップは続行されず、エラーメッセージが表示されます。
カスタマーマネージドキーを使用してエージェントスペースを作成する (コンソール)
-
AWS セキュリティエージェントコンソールで、エージェントスペースページに移動します。
-
エージェントスペースの作成を選択します。
-
エージェントスペースの名前とオプションの説明を入力します。
-
詳細設定 セクションを展開します。
-
データ暗号化で、次のいずれかを選択します。
-
アプリケーションのデフォルトキーを使用する – AWS Security Agent のセットアップ時に設定されたデフォルトの KMS キーを使用します。このオプションは、デフォルトキーが設定されている場合、デフォルトで選択されます。
-
別のキーを使用する – このエージェントスペースに別の KMS キーを指定します。暗号化設定をカスタマイズ (アドバンスド) を選択し、AWS KMS キーを選択する で、アカウントから KMS キーを選択するか、ARN を入力します。
-
-
[作成] を選択します。
カスタマーマネージドキーとの統合を作成する (コンソール)
-
AWS セキュリティエージェントコンソールで、統合ページに移動します。
-
統合を追加を選択し、プロバイダー (GitHub など) を選択します。
-
ステップ 1: プロバイダーアプリケーションをインストールして承認します。
-
ステップ 2: 登録の詳細で、登録名を入力し、プロバイダー設定を構成します。
-
データ暗号化セクションで、暗号化設定をカスタマイズ (詳細) を選択します。
-
AWS KMS キーを選択するには、アカウントから KMS キーを選択するか、KMS キー ARN を入力します。
-
接続 を選択します。
カスタマーマネージドキー (AWS CLI または SDK) を使用してリソースを作成する
CLI または SDK AWS を使用してカスタマーマネージドキーを指定するには:
-
を呼び出し
CreateApplicationてアプリケーションのデフォルトの KMS キーを設定するときは、defaultKmsKeyIdパラメータを含めます。このキーは、明示的な KMS キーなしでエージェントスペースまたは統合を作成するときにフォールバックとして使用されます。 -
CreateAgentSpaceまたは を呼び出しCreateIntegrationて特定のリソースを暗号化する場合は、kmsKeyIdパラメータを含めます。これは、アプリケーションレベルのデフォルトよりも優先されます。
パラメータの詳細については、AWS 「 セキュリティエージェント API リファレンス」を参照してください。
KMS キーを指定しない場合、 AWS Security Agent はアプリケーションレベルのデフォルト KMS キーを設定している場合はそれを使用します。それ以外の場合、リソースは AWSマネージドキーで暗号化されます。
キーローテーション
AWS セキュリティエージェントは、ブランチキーを定期的に自動的にローテーションします。ブランチキーローテーションは、以前のすべてのバージョンを保持しながら、ブランチキーの新しいアクティブバージョンを作成します。ローテーション後:
-
新しいデータは、新しいブランチキーバージョンで暗号化されます。
-
以前に暗号化されたデータは、古いブランチキーバージョンを使用して復号できます。
-
データの再暗号化は必要ありません。
ブランチキーのローテーションは、KMS キーのローテーションとは別のものです。カスタマーマネージドキーの自動 KMS キーローテーションを個別に有効にできます。詳細については、「 Key Management Service デベロッパーガイド AWS 」の「KMS キーのローテーション」を参照してください。
ブランチキーのローテーション後、以前のブランチキーのキャッシュされたコピーを新しい暗号化オペレーションに引き続き使用できる期間が短くなります。このウィンドウは、内部キャッシュtime-to-liveによって決定され、データのセキュリティには影響しません。
考慮事項
AWS Security Agent でカスタマーマネージドキーを使用する場合は、次の点に注意してください。
-
カスタマーマネージドキーは新しいリソースにのみ適用されます。カスタマーマネージドキーを設定する前に作成された既存のリソースは、引き続き AWSマネージド暗号化を使用します。既存のデータの移行はありません。
-
カスタマーマネージドキーは、作成時に指定されます。リソースの作成時に KMS キーを指定します。既存のリソースの KMS キーを追加または変更することはできません。
-
複数の KMS キーがサポートされています。リソースごとに異なる KMS キーを使用できます。たとえば、本番稼働用エージェントスペースには 1 つのキーを使用し、開発用エージェントスペースには別のキーを使用できます。
-
KMS キーを無効化または削除すると、データにアクセスできなくなります。KMS キーの削除を無効化またはスケジュールすると、 AWS Security Agent はそのキーで暗号化されたデータを復号できません。キーが再び有効になるまで、影響を受けるリソースにアクセスできなくなります。KMS キーを完全に削除すると、そのキーで暗号化されたすべてのデータにアクセスできなくなります。
-
キーポリシーのアクセス許可が必要です。KMS キーポリシーから必要なアクセス許可を削除すると、 AWS Security Agent は暗号化されたデータにアクセスできません。「」で説明されているように、キーポリシーが管理者ロール ( AWS コンソールでサービスを管理するために使用される)、アプリケーションロール (ウェブアプリケーションで使用される)、侵入テストサービスロール (エージェントが侵入テストを実行すると仮定)、および AWS セキュリティエージェントサービスプリンシパルにアクセス許可を付与していることを確認します必要な KMS アクセス許可。
-
AWS KMS クォータが適用されます。KMS キーに対する暗号化オペレーションは、KMS AWS リクエストクォータにカウントされます。通常の使用では、階層キーリングアーキテクチャにより、ブランチキーキャッシュによる KMS 呼び出しが最小限に抑えられます。詳細については、 AWS 「 Key Management Service デベロッパーガイド」の「リクエストクォータ」を参照してください。