AWS Verified Access の保管時のデータ暗号化 - AWS 検証済みアクセス

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

AWS Verified Access の保管時のデータ暗号化

AWS Verified Access は、 AWS 所有の KMS キーを使用して、デフォルトで保管中のデータを暗号化します。デフォルトで保管中のデータを暗号化すると、機密データの保護に伴う運用上のオーバーヘッドや複雑さを軽減できます。同時に、暗号化のコンプライアンスと規制の厳格な要件を満たす、安全なアプリケーションを構築することもできます。以下のセクションでは、Verified Access が保管中のデータ暗号化に KMS キーを使用する方法について詳しく説明します。

Verified Access と KMS キー

AWS 所有キー

Verified Access では、KMS キーを使用して、個人を特定できる情報 (PII) を自動的に暗号化します。これはデフォルトで発生し、AWS が所有するキーの使用を自分で表示、管理、使用、または監査することはできません。ただし、データを暗号化するキーを保護するための行動やプログラムを操作したり変更したりする必要はありません。詳細については、AWS Key Management Service デベロッパーガイドの「AWS 所有キー」を参照してください。

この暗号化レイヤーを無効にしたり、別の暗号化タイプを選択したりすることはできませんが、Verified Access リソースを作成するときにカスタマーマネージドキーを選択することで、既存の AWS 所有の暗号化キーに 2 番目の暗号化レイヤーを追加できます。

カスタマーマネージドキー

Verified Access では、お客様が作成して管理する対称カスタマーマネージドキーを使用して、既存のデフォルトの暗号化に 2 番目の暗号化レイヤーを追加することができます。この暗号化レイヤーはユーザーが完全に制御できるため、次のようなタスクを実行できます。

  • キーポリシーの策定と維持

  • IAM ポリシーとグラントの策定と維持

  • キーポリシーの有効化と無効化

  • キー暗号化マテリアルのローテーション

  • タグの追加

  • キーエイリアスの作成

  • 削除のためのキースケジューリング

詳細については、「AWS Key Management Service デベロッパーガイド」の「カスタマーマネージドキー」を参照してください。

注記

Verified Access は、 AWS 所有キーを使用して保管時の暗号化を自動的に有効にし、個人を特定できるデータを無料で保護します。

ただし、カスタマーマネージドキーを使用する場合、 AWS KMS 料金が適用されます。料金の詳細については、「AWS Key Management Service の料金」を参照してください。

個人を特定できる情報

次の表では、Verified Access が使用する個人を特定できる情報 (PII) と、その暗号化方法をまとめます。

データ型 AWS 所有キーの暗号化 カスタマーマネージドキーの暗号化 (オプション)
Trust provider (user-type)

ユーザータイプの信頼プロバイダーには、AuthorizationEndpoint、UserInfoEndpoint、ClientId、ClientSecret などの OIDC オプションが含まれており、これらは PII と見なされます。

有効 有効
Trust provider (device-type)

デバイスタイプの信頼プロバイダーには PII と見なされる TenantID が含まれます。

有効 有効
Group policy

Verified Access グループの作成または変更時に提供されます。アクセス要求を承認するためのルールが含まれています。ユーザー名やメールアドレスなどの PII が含まれる場合があります。

有効 有効
Endpoint policy

Verified Access エンドポイントの作成または変更時に提供されます。アクセス要求を承認するためのルールが含まれています。ユーザー名やメールアドレスなどの PII が含まれる場合があります。

有効 有効

AWS Verified Access が で許可を使用する方法 AWS KMS

Verified Access では、カスタマーマネージドキーを使用するためのグラントが必要です。

カスタマーマネージドキーで暗号化された Verified Access リソースを作成すると、Verified Access は CreateGrant リクエストを送信してユーザーに代わって許可を作成します AWS KMS。の許可 AWS KMS は、Verified Access にアカウントのカスタマーマネージドキーへのアクセスを許可するために使用されます。

Verified Access では、以下の内部オペレーションでカスタマーマネージドキーを使用するためにグラントが必要です。

  • Decrypt リクエストを に送信 AWS KMS して、暗号化されたデータキーを復号し、それらを使用してデータを復号できるようにします。

  • RetireGrant リクエストを に送信 AWS KMS して、グラントを削除します。

グラントへのアクセスの取り消しや、カスタマーマネージドキーに対するサービスのアクセスの取り消しは、いつでもできます。これを行うと、Verified Access はカスタマーマネージドキーによって暗号化されたすべてのデータにアクセスできなくなり、そのデータに依存しているオペレーションが影響を受けます。

Verified Access でカスタマーマネージドキーを使用する

対称カスタマーマネージドキーは AWS Management Console、、、または AWS KMS APIs を使用して作成できます。「 AWS Key Management Service デベロッパーガイド」の「対称暗号化キーの作成」の手順に従います。

キーポリシー

キーポリシーは、カスタマーマネージドキーへのアクセスを制御します。すべてのカスタマーマネージドキーには、キーポリシーが 1 つだけ必要です。このポリシーには、そのキーを使用できるユーザーとその使用方法を決定するステートメントが含まれています。キーポリシーは、カスタマーマネージドキーの作成時に指定できます。詳細については、「 AWS Key Management Service デベロッパーガイド」の「キーポリシー」を参照してください。

カスタマーマネージドキーを Verified Access リソースで使用するには、キーポリシーで次の API オペレーションを許可する必要があります。

  • kms:CreateGrant - カスタマーマネージドキーに許可を追加します。グラントは指定した KMS キーへのアクセスを制御します。これにより、必要な 許可の付与オペレーションに対し Verified Access がアクセスができるようになります。詳細については、「 AWS Key Management Service デベロッパーガイド」の「グラント」を参照してください。

    これにより、Verified Access が以下を実行できるようになります。

    • GenerateDataKeyWithoutPlainText を呼び出して暗号化されたデータキーを生成して保存します。データキーは暗号化にすぐには使用されないからです。

    • Decrypt を呼び出して、保存された暗号化データキーを使用して暗号化データにアクセスします。

    • 廃止するプリンシパルを設定して、サービスがRetireGrantを実行できるようにします。

  • kms:DescribeKey — カスタマーマネージドキーの詳細を提供し、Verified Access がキーを検証できるようにします。

  • kms:GenerateDataKey — Verified Access がキーを使用してデータを暗号化できるようにします。

  • kms:Decrypt — Verified Access が暗号化されたデータを復号できるようにします。

以下は、Verified Access で使用できるキーポリシーの例です。

"Statement" : [ { "Sid" : "Allow access to principals authorized to use Verified Access", "Effect" : "Allow", "Principal" : { "AWS" : "*" }, "Action" : [ "kms:DescribeKey", "kms:CreateGrant", "kms:GenerateDataKey", "kms:Decrypt" ], "Resource" : "*", "Condition" : { "StringEquals" : { "kms:ViaService" : "verified-access.region.amazonaws.com", "kms:CallerAccount" : "111122223333" } }, { "Sid": "Allow access for key administrators", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action" : [ "kms:*" ], "Resource": "arn:aws:kms:region:111122223333:key/key_ID" }, { "Sid" : "Allow read-only access to key metadata to the account", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:root" }, "Action" : [ "kms:Describe*", "kms:Get*", "kms:List*", "kms:RevokeGrant" ], "Resource" : "*" } ]

詳細については、「 デベロッパーガイド」の「キーポリシーの作成」と「キーアクセスのトラブルシューティング」を参照してください。 AWS Key Management Service

Verified Access リソースのカスタマーマネージドキーを指定する

カスタマーマネージドキーを指定して、以下のリソースに 2 番目の暗号化レイヤを提供できます。

を使用してこれらのリソースのいずれかを作成する場合 AWS Management Console、「追加の暗号化 -- オプション」セクションでカスタマーマネージドキーを指定できます。プロセス中に、暗号化設定のカスタマイズ (詳細) チェックボックスを選択し、使用する AWS KMS キー ID を入力します。これは既存のリソースを変更する場合や、 AWS CLIを使用して行うこともできます。

注記

上記のリソースのいずれかに追加の暗号化を提供しているカスタマーマネージドキーが失われた場合、そのリソースの設定値にはアクセスできなくなります。ただし、リソースは、 AWS Management Console または を使用して新しいカスタマーマネージドキーを適用し AWS CLI、設定値をリセットすることで変更できます。

AWS Verified Access 暗号化コンテキスト

暗号化コンテキストは、データに関する追加のコンテキスト情報を含むキーと値のペアのオプションセットです。 AWS KMS は、暗号化コンテキストを追加の認証データとして使用して、認証された暗号化をサポートします。データを暗号化するリクエストに暗号化コンテキストを含めると、 は暗号化コンテキストを暗号化されたデータに AWS KMS バインドします。データを復号化するには、そのリクエストに (暗号化時と) 同じ暗号化コンテキストを含めます。

AWS Verified Access 暗号化コンテキスト

Verified Access は、すべての暗号化オペレーションで同じ AWS KMS 暗号化コンテキストを使用します。キーは aws:verified-access:arnで、値はリソース Amazon リソースネーム (ARN) です。Verified Access リソースの暗号化コンテキストは次のとおりです。

Verified Access 信頼プロバイダー

"encryptionContext": { "aws:verified-access:arn": "arn:aws:ec2:region:111122223333:VerifiedAccessTrustProviderId" }

Verified Access グループ

"encryptionContext": { "aws:verified-access:arn": "arn:aws:ec2:region:111122223333:VerifiedAccessGroupId" }

Verified Access エンドポイント

"encryptionContext": { "aws:verified-access:arn": "arn:aws:ec2:region:111122223333:VerifiedAccessEndpointId" }

AWS Verified Access の暗号化キーのモニタリング

AWS Verified Access リソースでカスタマーマネージド KMS キーを使用すると、 AWS CloudTrailを使用して Verified Access が送信するリクエストを追跡できます AWS KMS。

次の例はCreateGrant、カスタマーマネージド KMS キーで暗号化されたデータにアクセスするために Verified Access RetireGrantによって呼び出される KMS オペレーションをモニタリングGenerateDataKeyする DecryptDescribeKey、、、および の AWS CloudTrail イベントです。

CreateGrant

カスタマーマネージドキーを使用してリソースを暗号化すると、Verified Access はユーザーに代わって AWS アカウント内のキーにアクセスする CreateGrant 要求を送信します。Verified Access が作成するグラントは、カスタマーマネージドキーに関連付けられているリソースに固有のものです。

以下のイベント例は、CreateGrant オペレーションを記録したものです。

{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AKIAI44QH8DHBEXAMPLE", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AKIAI44QH8DHBEXAMPLE", "arn": "arn:aws:iam::111122223333:role/Admin", "accountId": "111122223333", "userName": "Admin" }, "webIdFederationData": {}, "attributes": { "creationDate": "2023-09-11T16:27:12Z", "mfaAuthenticated": "false" } }, "invokedBy": "verified-access.amazonaws.com" }, "eventTime": "2023-09-11T16:41:42Z", "eventSource": "kms.amazonaws.com", "eventName": "CreateGrant", "awsRegion": "ca-central-1", "sourceIPAddress": "verified-access.amazonaws.com", "userAgent": "verified-access.amazonaws.com", "requestParameters": { "operations": [ "Decrypt", "RetireGrant", "GenerateDataKey" ], "keyId": "arn:aws:kms:ca-central-1:111122223333:key/5ed79e7f-88c9-420c-ae1a-61ee87104dae", "constraints": { "encryptionContextSubset": { "aws:verified-access:arn": "arn:aws:ec2:ca-central-1:111122223333:verified-access-trust-provider/vatp-0e54f581e2e5c97a2" } }, "granteePrincipal": "verified-access.ca-central-1.amazonaws.com", "retiringPrincipal": "verified-access.ca-central-1.amazonaws.com" }, "responseElements": { "grantId": "e5a050fff9893ba1c43f83fddf61e5f9988f579beaadd6d4ad6d1df07df6048f", "keyId": "arn:aws:kms:ca-central-1:111122223333:key/5ed79e7f-88c9-420c-ae1a-61ee87104dae" }, "requestID": "0faa837e-5c69-4189-9736-3957278e6444", "eventID": "1b6dd8b8-cbee-4a83-9b9d-d95fa5f6fd08", "readOnly": false, "resources": [ { "accountId": "AWS Internal", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:ca-central-1:111122223333:key/5ed79e7f-88c9-420c-ae1a-61ee87104dae" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }
RetireGrant

Verified Access では、リソースを削除するときに、RetireGrant オペレーションを使用してグラントを削除します。

以下のイベント例は、RetireGrant オペレーションを記録したものです。

{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AKIAI44QH8DHBEXAMPLE", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AKIAI44QH8DHBEXAMPLE", "arn": "arn:aws:iam::111122223333:role/Admin", "accountId": "111122223333", "userName": "Admin" }, "webIdFederationData": {}, "attributes": { "creationDate": "2023-09-11T16:42:33Z", "mfaAuthenticated": "false" } }, "invokedBy": "verified-access.amazonaws.com" }, "eventTime": "2023-09-11T16:47:53Z", "eventSource": "kms.amazonaws.com", "eventName": "RetireGrant", "awsRegion": "ca-central-1", "sourceIPAddress": "verified-access.amazonaws.com", "userAgent": "verified-access.amazonaws.com", "requestParameters": null, "responseElements": { "keyId": "arn:aws:kms:ca-central-1:111122223333:key/5ed79e7f-88c9-420c-ae1a-61ee87104dae" }, "additionalEventData": { "grantId": "b35e66f9bacb266cec214fcaa353c9cf750785e28773e61ba6f434d8c5c7632f" }, "requestID": "7d4a31c2-d426-434b-8f86-336532a70462", "eventID": "17edc343-f25b-43d4-bbff-150d8fff4cf8", "readOnly": false, "resources": [ { "accountId": "AWS Internal", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:ca-central-1:111122223333:key/5ed79e7f-88c9-420c-ae1a-61ee87104dae" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }
Decrypt

Verified Access は、保存されている暗号化データキーを使用して暗号化されたデータにアクセスするために Decrypt オペレーションを呼び出します。

以下のイベント例は、Decrypt オペレーションを記録したものです。

{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AKIAI44QH8DHBEXAMPLE", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AKIAI44QH8DHBEXAMPLE", "arn": "arn:aws:iam::111122223333:role/Admin", "accountId": "111122223333", "userName": "Admin" }, "webIdFederationData": {}, "attributes": { "creationDate": "2023-09-11T17:19:33Z", "mfaAuthenticated": "false" } }, "invokedBy": "verified-access.amazonaws.com" }, "eventTime": "2023-09-11T17:47:05Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "ca-central-1", "sourceIPAddress": "verified-access.amazonaws.com", "userAgent": "verified-access.amazonaws.com", "requestParameters": { "encryptionAlgorithm": "SYMMETRIC_DEFAULT", "keyId": "arn:aws:kms:ca-central-1:111122223333:key/380d006e-706a-464b-99c5-68768297114e", "encryptionContext": { "aws:verified-access:arn": "arn:aws:ec2:ca-central-1:111122223333:verified-access-trust-provider/vatp-00f20a4e455e9340f", "aws-crypto-public-key": "AkK+vi1W/acBKv7OR8p2DeUrA8EgpTffSrjBqNucODuBYhyZ3hlMuYYJz9x7CwQWZw==" } }, "responseElements": null, "requestID": "2e920fd3-f2f6-41b2-a5e7-2c2cb6f853a9", "eventID": "3329e0a3-bcfb-44cf-9813-8106d6eee31d", "readOnly": true, "resources": [ { "accountId": "AWS Internal", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:ca-central-1:111122223333:key/380d006e-706a-464b-99c5-68768297114e" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }
DescribeKey

Verified Access は DescribeKey オペレーションを使用して、リソースに関連付けられているカスタマーマネージドキーがアカウントおよびリージョンに存在するかどうかを確認します。

以下のイベント例は、DescribeKey オペレーションを記録したものです。

{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AKIAI44QH8DHBEXAMPLE", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AKIAI44QH8DHBEXAMPLE", "arn": "arn:aws:iam::111122223333:role/Admin", "accountId": "111122223333", "userName": "Admin" }, "webIdFederationData": {}, "attributes": { "creationDate": "2023-09-11T17:19:33Z", "mfaAuthenticated": "false" } }, "invokedBy": "verified-access.amazonaws.com" }, "eventTime": "2023-09-11T17:46:48Z", "eventSource": "kms.amazonaws.com", "eventName": "DescribeKey", "awsRegion": "ca-central-1", "sourceIPAddress": "verified-access.amazonaws.com", "userAgent": "verified-access.amazonaws.com", "requestParameters": { "keyId": "arn:aws:kms:ca-central-1:111122223333:key/380d006e-706a-464b-99c5-68768297114e" }, "responseElements": null, "requestID": "5b127082-6691-48fa-bfb0-4d40e1503636", "eventID": "ffcfc2bb-f94b-4c00-b6fb-feac77daff2a", "readOnly": true, "resources": [ { "accountId": "AWS Internal", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:ca-central-1:111122223333:key/380d006e-706a-464b-99c5-68768297114e" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }
GenerateDataKey

以下のイベント例は、GenerateDataKey オペレーションを記録したものです。

{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AKIAI44QH8DHBEXAMPLE", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AKIAI44QH8DHBEXAMPLE", "arn": "arn:aws:iam::111122223333:role/Admin", "accountId": "111122223333", "userName": "Admin" }, "webIdFederationData": {}, "attributes": { "creationDate": "2023-09-11T17:19:33Z", "mfaAuthenticated": "false" } }, "invokedBy": "verified-access.amazonaws.com" }, "eventTime": "2023-09-11T17:46:49Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "ca-central-1", "sourceIPAddress": "verified-access.amazonaws.com", "userAgent": "verified-access.amazonaws.com", "requestParameters": { "encryptionContext": { "aws:verified-access:arn": "arn:aws:ec2:ca-central-1:111122223333:verified-access-trust-provider/vatp-00f20a4e455e9340f", "aws-crypto-public-key": "A/ATGxaYatPUlOtM+l/mfDndkzHUmX5Hav+29IlIm+JRBKFuXf24ulztmOIsqFQliw==" }, "numberOfBytes": 32, "keyId": "arn:aws:kms:ca-central-1:111122223333:key/380d006e-706a-464b-99c5-68768297114e" }, "responseElements": null, "requestID": "06535808-7cce-4ae1-ab40-e3afbf158a43", "eventID": "1ce79601-5a5e-412c-90b3-978925036526", "readOnly": true, "resources": [ { "accountId": "AWS Internal", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:ca-central-1:111122223333:key/380d006e-706a-464b-99c5-68768297114e" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }