Data Catalog の暗号化 - AWS Glue

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

Data Catalog の暗号化

AWS Glue Data Catalog 暗号化は、機密データのセキュリティを強化します。 は AWS Key Management Service (AWS KMS) とAWS Glue統合して、データカタログに保存されているメタデータを暗号化します。AWS Glue コンソールまたは を使用して、Data Catalog 内のリソースの暗号化設定を有効または無効にできますAWS CLI。

Data Catalog の暗号化を有効にすると、作成するすべての新しいオブジェクトが暗号化されます。暗号化を無効にすると、作成した新しいオブジェクトは暗号化されませんが、既存の暗号化されたオブジェクトは暗号化されたままになります。

AWS マネージド暗号化キーまたはカスタマーマネージド暗号化キーを使用して、Data Catalog 全体を暗号化できます。キーのタイプと状態の詳細については、「 AWS Key Management Serviceデベロッパーガイド」の「 のAWS Key Management Service概念」を参照してください。

AWS マネージドキー

AWS マネージドキーは、 アカウント内の KMS キーで、 と統合されている AWSのサービスによってユーザーに代わって作成、管理、使用されますAWS KMS。アカウントの AWSマネージドキーを表示したり、キーポリシーを表示したり、 AWS CloudTrailログでその使用を監査したりできます。ただし、これらのキーを管理したり、アクセス許可を変更したりすることはできません。

保管時の暗号化AWS Glueは、メタデータの暗号化に使用される AWS KMS の AWS マネージドキーを管理するために、 と自動的に統合されます。メタデータ暗号化を有効にするときに AWSマネージドキーが存在しない場合、 AWS KMSは自動的に新しいキーを作成します。

詳細については、「AWS マネージドキー」を参照してください。

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

カスタマーマネージドキーは AWS アカウント内の KMS キーで、ユーザーが作成、所有、および管理します。ユーザーは、この KMS キーに関する完全なコントロール権を持ちます。次のようにできます。

  • キーポリシー、IAM ポリシー、グラントを確立して維持する

  • 有効化および無効化する

  • 暗号化マテリアルをローテーションする

  • タグを追加する

  • それらを参照するエイリアスを作成する

  • 削除をスケジュールする

カスタマーマネージドキーのアクセス許可の管理の詳細については、「カスタマーマネージドキー」を参照してください。

重要

AWS Glue は、対称カスタマーマネージドキーのみをサポートします。KMS キーリストには、対称キーのみが表示されます。ただし、KMS キー ARN の選択を選択すると、コンソールでは任意のキータイプの ARN を入力できます。対称キーには ARN だけを入力するようにしてください。

対称カスタマーマネージドキーを作成するには、 AWS Key Management Serviceデベロッパーガイドの対称カスタマーマネージドキーを作成するステップに従います。

保管中のデータカタログの暗号化を有効にすると、次のリソースタイプが KMS キーを使用して暗号化されます。

  • データベース

  • テーブル

  • パーティション

  • テーブルのバージョン

  • 列統計

  • ユーザー定義関数

  • データカタログビュー

AWS Glue の暗号化コンテキスト

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

"encryptionContext": { "glue_catalog_id": "111122223333" }

AWS マネージドキーまたは対称カスタマーマネージドキーを使用して Data Catalog を暗号化する場合、監査レコードとログで暗号化コンテキストを使用して、キーがどのように使用されているかを特定することもできます。暗号化コンテキストは、 AWS CloudTrailまたは ログによって生成されたAmazon CloudWatchログにも表示されます。

暗号化の有効化

AWS Glue コンソールの Data Catalog 設定で、または を使用して、AWS Glue Data Catalogオブジェクトの暗号化を有効にできますAWS CLI。

Console
コンソールを使用して暗号化を有効にするには
  1. AWS Management Console にサインインし、AWS Glue コンソール (https://console.aws.amazon.com/glue/) を開きます。

  2. ナビゲーションペインでデータカタログを選択します。

  3. データカタログ設定ページで、メタデータ暗号化チェックボックスを選択し、 AWS KMSキーを選択します。

    暗号化を有効にするときに、カスタマーマネージドキーを指定しない場合、暗号化設定は AWSマネージド KMS キーを使用します。

  4. (オプション) カスタマーマネージドキーを使用して Data Catalog を暗号化する場合、Data Catalog には、リソースを暗号化および復号する IAM ロールを登録するオプションがあります。がユーザーに代わって引き受けAWS Glueることができる IAM ロールのアクセス許可を付与する必要があります。これには、データの暗号化と復号化のAWS KMSアクセス許可が含まれます。

    Data Catalog で新しいリソースを作成すると、 はデータを暗号化するために提供される IAM ロールをAWS Glue引き受けます。同様に、コンシューマーがリソースにアクセスすると、 は IAM ロールをAWS Glue引き受けてデータを復号します。必要なアクセス許可を持つ IAM ロールを登録すると、呼び出し元のプリンシパルはキーにアクセスしてデータを復号するアクセス許可を必要としなくなります。

    重要

    KMS オペレーションを IAM ロールに委任できるのは、カスタマーマネージドキーを使用して Data Catalog リソースを暗号化する場合のみです。KMS ロール委任機能は、現時点では Data Catalog リソースの暗号化に AWSマネージドキーを使用することをサポートしていません。

    警告

    IAM ロールを有効にして KMS オペレーションを委任すると、 AWSマネージドキーで以前に暗号化された Data Catalog リソースにアクセスできなくなります。

    1. がユーザーに代わってデータを暗号化および復号することを引き受けAWS Glueることができる IAM ロールを有効にするには、IAM ロールに KMS オペレーションを委任するオプションを選択します。

    2. 次に、IAM ロールを選択します。

      IAM ロールを作成するには、「AWS Glue の IAM ロールを作成する」を参照してください。

      が Data Catalog にアクセスするためにAWS Glue引き受ける IAM ロールには、Data Catalog 内のメタデータを暗号化および復号するためのアクセス許可が必要です。IAM ロールを作成し、次のインラインポリシーをアタッチできます。

      • 次のポリシーを追加して、Data Catalog を暗号化および復号化するAWS KMSアクセス許可を含めます。

        { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:<region>:<account-id>:key/<key-id>" } ] }
      • 次に、 AWS Glueサービスが IAM ロールを引き受けるように、次の信頼ポリシーをロールに追加します。

        { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "glue.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
      • 次に、IAM ロールに アクセスiam:PassRole許可を追加します。

        { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::<account-id>:role/<encryption-role-name>" ] } ] }

    暗号化を有効にするときに、 が引き受けAWS Glueる IAM ロールを指定していない場合、Data Catalog にアクセスするプリンシパルには、次の API オペレーションを実行するアクセス許可が必要です。

    • kms:Decrypt

    • kms:Encrypt

    • kms:GenerateDataKey

AWS CLI
SDK または AWS CLI を使用して暗号化を有効にするには
  • PutDataCatalogEncryptionSettings API オペレーションを使用します。キーが指定されていない場合、 は顧客アカウントの AWSマネージド暗号化キーAWS Glueを使用して Data Catalog を暗号化します。

    aws glue put-data-catalog-encryption-settings \ --data-catalog-encryption-settings '{ "EncryptionAtRest": { "CatalogEncryptionMode": "SSE-KMS-WITH-SERVICE-ROLE", "SseAwsKmsKeyId": "arn:aws:kms:<region>:<account-id>:key/<key-id>", "CatalogEncryptionServiceRole":"arn:aws:iam::<account-id>:role/<encryption-role-name>" } }'

暗号化を有効にすると、Data Catalog オブジェクトで作成したすべてのオブジェクトが暗号化されます。この設定をオフにすると、Data Catalog で作成したオブジェクトは暗号化されなくなります。必要な KMS アクセス許可を使用して、Data Catalog 内の既存の暗号化オブジェクトに引き続きアクセスできます。

重要

AWS KMS​ キーは、Data Catalog でそのキーを使用して暗号化されたすべてのオブジェクトの ​AWS KMS キーストアに、使用可能な状態で保持する必要があります。キーを削除すると、オブジェクトは復号化できなくなります。ある種のシナリオでは、このようにして、Data Catalog メタデータにアクセスできないようにする場合があります。

の KMS キーのモニタリング AWS Glue

Data Catalog リソースで KMS キーを使用する場合、 AWS CloudTrailまたは Amazon CloudWatch Logs を使用して、 が AWS Glueに送信するリクエストを追跡できますAWS KMS。 は、KMS キーで暗号化されたデータにアクセスするために をAWS Glue呼び出す KMS オペレーションをAWS CloudTrailモニタリングして記録します。

以下の例は、 Decryptおよび GenerateDataKeyオペレーションのAWS CloudTrailイベントです。

Decrypt
{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AROAXPHTESTANDEXAMPLE:Sampleuser01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AROAXPHTESTANDEXAMPLE", "arn": "arn:aws:iam::111122223333:role/Admin", "accountId": "111122223333", "userName": "Admin" }, "webIdFederationData": {}, "attributes": { "creationDate": "2024-01-10T14:33:56Z", "mfaAuthenticated": "false" } }, "invokedBy": "glue.amazonaws.com" }, "eventTime": "2024-01-10T15:18:11Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "eu-west-2", "sourceIPAddress": "glue.amazonaws.com", "userAgent": "glue.amazonaws.com", "requestParameters": { "encryptionContext": { "glue_catalog_id": "111122223333" }, "encryptionAlgorithm": "SYMMETRIC_DEFAULT" }, "responseElements": null, "requestID": "43b019aa-34b8-4798-9b98-ee968b2d63df", "eventID": "d7614763-d3fe-4f84-a1e1-3ca4d2a5bbd5", "readOnly": true, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:<region>:111122223333:key/<key-id>" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management", "sessionCredentialFromConsole": "true" }
GenerateDataKey
{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AROAXPHTESTANDEXAMPLE:V_00_GLUE_KMS_GENERATE_DATA_KEY_111122223333", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/V_00_GLUE_KMS_GENERATE_DATA_KEY_111122223333", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AROAXPHTESTANDEXAMPLE", "arn": "arn:aws:iam::111122223333:role/Admin", "accountId": "AKIAIOSFODNN7EXAMPLE", "userName": "Admin" }, "webIdFederationData": {}, "attributes": { "creationDate": "2024-01-05T21:15:47Z", "mfaAuthenticated": "false" } }, "invokedBy": "glue.amazonaws.com" }, "eventTime": "2024-01-05T21:15:47Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "eu-west-2", "sourceIPAddress": "glue.amazonaws.com", "userAgent": "glue.amazonaws.com", "requestParameters": { "keyId": "arn:aws:kms:eu-west-2:AKIAIOSFODNN7EXAMPLE:key/AKIAIOSFODNN7EXAMPLE", "encryptionContext": { "glue_catalog_id": "111122223333" }, "keySpec": "AES_256" }, "responseElements": null, "requestID": "64d1783a-4b62-44ba-b0ab-388b50188070", "eventID": "1c73689b-2ef2-443b-aed7-8c126585ca5e", "readOnly": true, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:eu-west-2:111122223333:key/AKIAIOSFODNN7EXAMPLE" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }