

# AWS Glue でのデータ保護
<a name="data-protection"></a>

AWS Glue には、データを保護するために設計された機能がいくつか用意されています。

**Topics**
+ [保管中のデータの暗号化](encryption-at-rest.md)
+ [Encrypting data in transit](encryption-in-transit.md)
+ [FIPS 準拠](fips-compliance.md)
+ [キーの管理](key-management.md)
+ [AWS の他のサービスへの AWS Glue の依存関係](dependency-on-other-services.md)
+ [開発エンドポイント](dev-endpoints.md)

# 保管中のデータの暗号化
<a name="encryption-at-rest"></a>

AWS Glue は、[Visual ETL ジョブの作成](author-job-glue.md) と [開発エンドポイントを使用してスクリプトを開発する](dev-endpoint.md) のために保管時のデータの暗号化をサポートしています。[AWS Key Management Service (AWS KMS)](https://aws.amazon.com/kms/) キーを使用して保管時の暗号化されたデータを書き込むように ETL (抽出、変換、ロード) ジョブと開発エンドポイントを設定できます。また、AWS KMS で管理するキーを使用して、[AWS Glue Data Catalog](components-overview.md#data-catalog-intro) に格納されているメタデータを暗号化することもできます。さらに、AWS KMS キーを使用して、ジョブのブックマークや、[クローラー](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html)および ETL ジョブで生成されたログを暗号化することもできます。

ジョブ、クローラー、開発エンドポイントによって Amazon Simple Storage Service (Amazon S3) と Amazon CloudWatch Logs に書き込まれたデータに加えて、AWS Glue Data Catalog でメタデータオブジェクトを暗号化できます。ジョブ、クローラーそして開発エンドポイントを AWS Glue で作成する場合、セキュリティ設定をアタッチすることで暗号化設定を指定します。セキュリティ設定には、Amazon S3 で管理されるサーバー側の暗号化キー (SSE-S3)、または AWS KMS (SSE-KMS) で保管されるカスタマーマスターキー (CMK) があります。AWS Glue コンソールを使用してセキュリティ設定を作成できます。

アカウント内の Data Catalog 全体の暗号化を有効にすることもできます。そのためには、AWS KMS に格納されている CMK を指定します。

**重要**  
AWS Glue は、対称カスタマーマネージドキーのみをサポートしています。詳細については、「AWS Key Management Service デベロッパーガイド」の「[カスタマーマネージドキー (CMK)](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#master_keys)」を参照してください。  


暗号化を有効にすると、データカタログオブジェクトを追加するとき、クローラーやジョブを実行するとき、または開発エンドポイントを開始するときに、SSE-S3 または SSE-KMS キーを使用して、保管中のデータの書き込みが行われます。さらに、信頼された Transport Layer Security (TLS) プロトコルを使用して、Java Database Connectivity (JDBC) データストアのみにアクセスするように AWS Glue​ を設定できます。

AWS Glue​ では、以下の場所で暗号化設定をコントロールします。
+ Data Catalog の設定。
+ 作成したセキュリティ設定。
+ AWS Glue ETL (抽出、変換、ロード) ジョブにパラメータとして渡されるサーバー側の暗号化設定 (SSE-S3 または SSE-KMS)。

暗号化を設定する方法の詳細については、「[AWS Glue での暗号化のセットアップ](set-up-encryption.md)」を参照してください。

**Topics**
+ [Data Catalog の暗号化](encrypt-glue-data-catalog.md)
+ [接続パスワードの暗号化](encrypt-connection-passwords.md)
+ [AWS Glue​ によって書き込まれたデータの暗号化](encryption-security-configuration.md)

# Data Catalog の暗号化
<a name="encrypt-glue-data-catalog"></a>

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

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

AWS マネージド暗号化キーまたはカスタマーマネージド暗号化キーを使用し、Data Catalog 全体を暗号化できます。キーの種類と状態の詳細については、AWS Key Management Service デベロッパーガイドの「[AWS Key Management Service の概念](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html#key-state-cmk-type)」を参照してください。

**注記**  
暗号化されたデータカタログをクローラーで使用する場合、暗号化設定を維持する必要があります。クローラーが暗号化されたカタログを処理した後に暗号化設定を削除すると、エラーが発生します。暗号化設定を削除する必要がある場合は、既存のクローラを変更するのではなく、新しいクローラを作成してください。

## AWS マネージドキー
<a name="AWS-managed-keys"></a>

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

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

詳細については、[AWS マネージドキー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) を参照してください。

## カスタマーマネージドキー
<a name="customer-managed-keys"></a>

カスタマーマネージドキーは AWS アカウント 内の KMS キーで、ユーザーが作成、所有、および管理します。ユーザーは、この KMS キーに関する完全なコントロール権を持ちます。以下の操作を実行できます。
+  キーポリシー、IAM ポリシー、許可付与の確立と維持 
+ 有効化と無効化
+  暗号化マテリアルのローテーション 
+  タグを追加 
+ 参照するエイリアスの作成
+  削除のスケジュール設定

カスタマーマネージドキーの許可を管理する方法の詳細については、[カスタマーマネージドキー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)を参照してください。

**重要**  
AWS Glue は、対称カスタマーマネージドキーのみをサポートしています。KMS キー リストには、対称キーのみが表示されます。ただし、**[KMS キー ARN の選択]** を選択した場合、任意のキータイプの ARN をコンソールで入力します。対称キーには ARN だけを入力するようにしてください。  
対称カスタマーマネージドキーを作成するには、AWS Key Management Service デベロッパーガイドの「[対称カスタマーマネージドキーの作成](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)」の手順に従ってください。

保存時に Data Catalog の暗号化を有効にすると、KMS キーを使用して次のリソースタイプが暗号化されます。
+ データベース
+ テーブル
+ パーティション
+ テーブルのバージョン
+ 列統計
+ ユーザー定義関数
+ Data Catalog のビュー

## AWS Glue の暗号化コンテキスト
<a name="encryption-context"></a>

 [暗号化コンテキスト](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context)とは、データに関する追加のコンテキスト情報を含むために、使用する (オプションの) キーと値のペアのセットです。AWS KMS は、暗号化コンテキストを[追加の認証済みデータ](https://docs.aws.amazon.com/crypto/latest/userguide/cryptography-concepts.html#term-aad)として使用し、[暗号化の認証](https://docs.aws.amazon.com/crypto/latest/userguide/cryptography-concepts.html#define-authenticated-encryption)をサポートします。データの暗号化リクエストに暗号化コンテキストを組み込むと、AWS KMS は暗号化コンテキストを暗号化後のデータにバインドします。データを復号化するには、リクエストに同じ暗号化コンテキストを含めます。AWS Glue はすべての AWS KMS の暗号化処理に同じ暗号化コンテキストを使用する際、キーは `glue_catalog_id` で値は `catalogId` を指定します。

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

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

## 暗号化の有効化
<a name="enable-encryption"></a>

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

------
#### [ Console ]

**コンソールを使用して暗号化を有効にするには**

1. AWS マネジメントコンソール にサインインし、AWS Glue コンソール ([https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)) を開きます。

1. ナビゲーションペインで、**[データカタログ]** を選択します。

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

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

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

   Data Catalog に新しいリソースを作成すると、AWS Glue はデータを暗号化するために提供される IAM ロールを引き受けます。同様に、コンシューマがリソースにアクセスすると、AWS Glue はデータを復号化する IAM ロールを引き受けます。必要な許可を持つ IAM ロールを登録した場合、呼び出し元のプリンシパルはキーにアクセスしてデータを復号化する許可の必要がなくなります。
**重要**  
カスタマーマネージドキーを使用して Data Catalog リソースを暗号化するときに限り、KMS オペレーションを IAM ロールに委任できます。KMS ロール委任の機能は、現時点では Data Catalog リソースの暗号化に AWS マネージドキーの使用をサポートしていません。
**警告**  
IAM ロールを有効にして KMS の操作を委任すると、以前に AWS マネージドキーで暗号化された Data Catalog リソースにアクセスできなくなります。

   1. お客様に代わって AWS Glue が引き受けられる IAM ロールを有効にし、データの暗号化および復号化できるようにするには、**[KMS 操作を IAM ロールに委任する]** オプションを選択します。

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

      IAM ロールを作成するには、[AWS Glue の IAM ロールを作成する](https://docs.aws.amazon.com/glue/latest/dg/create-an-iam-role.html) を参照してください。

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

------
#### [ JSON ]

****  

        ```
        {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
            {
              "Effect": "Allow",
              "Action": [
                "kms:Decrypt",
                "kms:Encrypt",
                "kms:GenerateDataKey"
              ],
              "Resource": "arn:aws:kms:us-east-1:111122223333:key/<key-id>"
            }
          ]
        }
        ```

------
      + 次に、AWS Glue サービスが IAM ロールを引き受けるには、ロールに次の信頼ポリシーを追加します。

------
#### [ JSON ]

****  

        ```
        {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
            {
              "Sid": "",
              "Effect": "Allow",
              "Principal": {
                "Service": "glue.amazonaws.com"
              },
              "Action": "sts:AssumeRole"
            }
          ]
        }
        ```

------
      + 次に、IAM ロールに `iam:PassRole` 許可を追加します。

------
#### [ JSON ]

****  

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

------

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

------
#### [ AWS CLI ]

**SDK または AWS CLI を使用して暗号化を有効にするには**
+ `PutDataCatalogEncryptionSettings` API オペレーションを使用します。キーが指定されていない場合、AWS Glue はカスタマーアカウントに AWS マネージド暗号化キーを使用し、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 メタデータにアクセスできないようにする場合があります。   | 

## AWS Glue 用に KMS キーの監視
<a name="monitoring-keys"></a>

 Data Catalog リソースに KMS キーを使用すると、AWS CloudTrail または Amazon CloudWatch ログを使用して AWS Glue が AWS KMS に送信するリクエストを追跡できます。AWS CloudTrail は、KMS キーで暗号化されたデータにアクセスするために AWS Glue が呼び出す KMS 操作を監視および記録します。

 次の例は、`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"
}
```

------

```
      
```

# 接続パスワードの暗号化
<a name="encrypt-connection-passwords"></a>

AWS Glue Data Catalog の接続パスワードを取得するには、`GetConnection` および `GetConnections` の API オペレーションを使用します。これらのパスワードは Data Catalog 接続に保存され、AWS Glue から Java Database Connectivity (JDBC) データストアに接続される際に使用されます。接続が作成または更新された際、Data Catalog 設定のオプションによって、パスワードが暗号化されたかどうかが判断され、暗号化されている場合には、指定された AWS Key Management Service (AWS KMS) キーが判断されます。

AWS Glue コンソールの **[Data catalog settings]** (データカタログ設定) ページで、このオプションを有効にできます。

**接続パスワードを暗号化するには**

1. AWS マネジメントコンソール にサインインし、AWS Glue コンソール ([https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)) を開きます。

1. ナビゲーションペインで **[設定]** を選択します。

1. **[Data catalog settings]** (データカタログ設定) ページで、**[Encrypt connection passwords]** (接続パスワードの暗号化) を選択し、AWS KMS を選択します。
**重要**  
AWS Glue は、対称カスタマーマスターキー (CMK) のみをサポートしています。[**AWS KMS key**] (KMS キー) リストには、対称キーのみが表示されます。ただし、[**Choose a AWS KMS key ARN**] (KMS キー ARN を選択します) を選択した場合、任意のキータイプの ARN をコンソールで入力します。対称キーには ARN だけを入力するようにしてください。

   詳細については、「[データカタログの設定](console-data-catalog-settings.md)」を参照してください。

# AWS Glue​ によって書き込まれたデータの暗号化
<a name="encryption-security-configuration"></a>

*セキュリティ設定*は、AWS Glue が使用できるセキュリティプロパティのセットです。セキュリティ構成を使用して、保管時にデータを暗号化できます。以下のシナリオでは、セキュリティ設定を使用できるいくつかの方法を示します。
+ 暗号化された Amazon CloudWatch Logs​ を書き込む ​AWS Glue クローラーにセキュリティ設定をアタッチします。クローラーにセキュリティ設定のアタッチの詳細については、「[ステップ 3: セキュリティ設定を構成する](define-crawler-configure-security-settings.md)」を参照してください。
+ 抽出、変換、ロード (ETL) ジョブにセキュリティ設定をアタッチして、暗号化された Amazon Simple Storage Service (Amazon S3) ターゲット、および暗号化された CloudWatch Logs を書き込みます。
+ ETL ジョブにセキュリティ設定をアタッチして、暗号化された Amazon S3 データとして​ジョブブックマークを書き込みます。
+ 開発エンドポイントにセキュリティ設定をアタッチして、暗号化された ​Amazon S3 ターゲットを書き込みます。

**重要**  
現時点では、セキュリティ設定は、ETL ジョブのパラメータとして渡されるサーバー側暗号化 (SSE-S3) 設定をすべてオーバーライドします。したがって、ジョブにセキュリティ設定と SSE-S3 の両方が関連付けられている場合、SSE-S3 パラメータは無視されます。

セキュリティ設定の詳細については、「[AWS Glue コンソールでのセキュリティ設定の管理](console-security-configurations.md)」を参照してください。

**Topics**
+ [セキュリティ設定を使用するための AWS Glue​ のセットアップ](#encryption-setup-Glue)
+ [VPC ジョブとクローラーの AWS KMS へのルートを作成する](#encryption-kms-vpc-endpoint)
+ [AWS Glue コンソールでのセキュリティ設定の管理](console-security-configurations.md)

## セキュリティ設定を使用するための AWS Glue​ のセットアップ
<a name="encryption-setup-Glue"></a>

以下の手順を実行して、セキュリティ設定を使用するように AWS Glue​ 環境をセットアップします。

1. ​AWS Glue クローラーに渡される IAM ロールおよび CloudWatch Logs を暗号化するジョブ​への AWS KMS​ アクセス許可を付与するため、AWS Key Management Service​ (AWS KMS) キーを作成または更新します。詳しくは、*Amazon CloudWatch Logs ユーザーガイド*の「[AWS KMS を使用して CloudWatch Logs のログデータを暗号化する](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html)」を参照してください。

   次の例では、*"role1"*、*"role2"*、および *"role3"* が、クローラーおよびジョブに渡される IAM ロールです。

   ```
   {
          "Effect": "Allow",
          "Principal": { "Service": "logs.region.amazonaws.com",
          "AWS": [
                   "role1",
                   "role2",
                   "role3"
                ] },
                       "Action": [
                              "kms:Encrypt*",
                              "kms:Decrypt*",
                              "kms:ReEncrypt*",
                              "kms:GenerateDataKey*",
                              "kms:Describe*"
                       ],
                       "Resource": "*"
   }
   ```

   キーを使用して ​CloudWatch Logs を暗号化する場合、`"Service": "logs.region.amazonaws.com"`​ と表示される ​`Service` ステートメントが必要です。

1. 使用する前に、AWS KMS​ キーが `ENABLED`​ であることを確認します。

**注記**  
データレイクフレームワークとして Iceberg を使用している場合、Iceberg テーブルにはサーバー側の暗号化を有効にする独自のメカニズムがあります。AWS Glue のセキュリティ設定に加えて、これらの設定を有効にする必要があります。Iceberg テーブルでサーバー側の暗号化を有効にするには、「[Iceberg ドキュメント](https://iceberg.apache.org/docs/latest/aws/#s3-server-side-encryption)」のガイダンスを確認してください。

## VPC ジョブとクローラーの AWS KMS へのルートを作成する
<a name="encryption-kms-vpc-endpoint"></a>

インターネットを介さずに、仮想プライベートクラウド (VPC) のプライベートエンドポイントから AWS KMS に直接接続できます。VPC エンドポイントを使用すると、VPC と AWS KMS の間の通信は完全に AWS ネットワーク内で実施されます。

VPC 内に AWS KMS VPC エンドポイントを作成することができます。この手順を実行しないと、ジョブまたはクローラーがジョブの `kms timeout` またはクローラーの `internal service exception` で失敗する可能性があります。詳細な手順については、「*AWS Key Management Serviceデベロッパーガイド*」の「[VPC エンドポイントを介した AWS KMS への接続](https://docs.aws.amazon.com/kms/latest/developerguide/kms-vpc-endpoint.html)」を参照してください。

これらの手順に従って、[VPC コンソール](https://console.aws.amazon.com//vpc)で次の操作を行う必要があります。
+ **[Enable Private DNS name]** (プライベート DNS 名を有効にする) を選択します。
+ Java Database Connectivity (JDBC) にアクセスするジョブまたはクローラーに使用する **[Security group]** (セキュリティグループ) (自己参照ルールを持つ) を選択します。AWS Glue 接続の詳細については、「[データへの接続](glue-connections.md)」を参照してください。

JDBC データストアにアクセスするクローラーまたはジョブにセキュリティ設定を追加する場合、AWS Glue には AWS KMS エンドポイントへのルートが必要です。ネットワークアドレス変換 (NAT) ゲートウェイまたは AWS KMS VPC エンドポイントを使用してルートを指定できます。NAT ゲートウェイを作成するには、*Amazon VPC ユーザーガイド*の「[NAT ゲートウェイ](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html)」を参照してください。

# AWS Glue コンソールでのセキュリティ設定の管理
<a name="console-security-configurations"></a>

**警告**  
AWS Glue セキュリティ設定は、現在、Ray ジョブではサポートされていません。

AWS Glue の [*security configuration*] (セキュリティ設定) には、暗号化されたデータを書き込むときに必要なプロパティが含まれています。AWS Glue コンソールでセキュリティ設定を作成し、クローラ、ジョブ、および開発エンドポイントによって使用される暗号化プロパティを指定します。

作成したすべてのセキュリティ設定を表示するには、[https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/) で AWS Glue コンソールを開き、ナビゲーションペインで [**Security configurations**] (セキュリティ設定) をクリックします。

[**セキュリティ設定**] には、設定に関する次のプロパティが表示されます。

**名前**  
設定を作成したときに指定した一意の名前です。名前に使用できるのは、文字 (A～Z)、数字 (0～9)、ハイフン (-)、またはアンダースコア (\$1) で、長さは 255 文字までです。

**Amazon S3 暗号化を有効にする**  
オンの場合、データカタログのメタデータ保存に Amazon Simple Storage Service (Amazon S3) 暗号化モード (`SSE-KMS`、`SSE-S3` など) が有効になります。

**Amazon CloudWatch Logs 暗号化を有効にする**  
オンの場合、Amazon CloudWatch にログを書き込む際に Amazon S3 暗号化モード (`SSE-KMS` など) が有効になります。

**詳細設定: ジョブのブックマーク暗号化を有効にする**  
オンの場合、ジョブがブックマークされた際に Amazon S3 暗号化モード (`CSE-KMS` など) が有効になります。

コンソールの [**セキュリティ設定**] セクションで設定を追加または削除できます。設定の詳細を表示するには、リスト内の設定名を選択します。詳細には、設定の作成時に定義した情報が含まれます。

## セキュリティ設定の追加
<a name="console-security-configurations-wizard"></a>

 セキュリティ設定を追加するには、AWS Glue コンソールの [**セキュリティ設定**] ページで [**セキュリティ設定の追加**] を選択します。

![\[このスクリーンショットは、[セキュリティ設定の追加]ページが表示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/add_security_configuration.png)


 **セキュリティ設定プロパティ** 

 一意のセキュリティ設定名を入力します。名前に使用できるのは、文字 (A～Z)、数字 (0～9)、ハイフン (-)、またはアンダースコア (\$1) で、長さは 255 文字までです。

 **暗号化設定** 

Amazon CloudWatch のログと Amazon S3 のデータカタログに保存されているメタデータの保管時の暗号化を有効にできます。AWS Glue コンソールで AWS Key Management Service (AWS KMS) キーを使用したデータとメタデータの暗号化を設定するには、コンソールユーザーにポリシーを追加します。このポリシーでは次の例のように、​許可されているリソースを、Amazon S3 データストアを暗号化するために使用されるキーの Amazon リソースネーム (ARN) として、指定する必要があります。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "kms:GenerateDataKey",
      "kms:Decrypt",
      "kms:Encrypt"
    ],
    "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-id"
  }
}
```

------

**重要**  
セキュリティ設定がクローラまたはジョブにアタッチされている場合、渡される IAM ロールには AWS KMS アクセス許可が必要です。詳細については、[AWS Glue​ によって書き込まれたデータの暗号化](encryption-security-configuration.md) を参照してください。

設定を定義する場合、次のプロパティの値を指定できます。

**S3 暗号化を有効にする**  
Amazon S3 データを書き込む場合は、Amazon S3 管理キー (SSE-S3) によるサーバー側の暗号化、または AWS KMS 管理キー (SSE-KMS) によるサーバー側の暗号化を使用します。このフィールドはオプションです。Amazon S3 へのアクセス許可を有効にするには、AWS KMS キーを選択するか、または [**Enter a key ARN**] (キーの ARN を入力) を選択してキーの ARN を指定します。`arn:aws:kms:region:account-id:key/key-id` の形式で ARN を入力します。`arn:aws:kms:region:account-id:alias/alias-name` など、キーのエイリアスで ARN を指定することもできます。  
ジョブで Spark UI を有効にすると、Amazon S3 にアップロードされた Spark UI ログファイルに同じ暗号化が適用されます。  
AWS Glue は、対称カスタマーマスターキー (CMK) のみをサポートしています。[**AWS KMS key**] (KMS キー) リストには、対称キーのみが表示されます。ただし、[**Choose a AWS KMS key ARN**] (KMS キー ARN を選択します) を選択した場合、任意のキータイプの ARN をコンソールで入力します。対称キーには ARN だけを入力するようにしてください。

**CloudWatch Logs 暗号化を有効にする**  
サーバー側 (SSE-KMS) 暗号化が CloudWatch Logs の暗号化に使用されます。このフィールドはオプションです。有効にするには、AWS KMS キーを選択するか、または [**Enter a key ARN**] (キーの ARN を入力)を選択してキーの ARN を指定します。`arn:aws:kms:region:account-id:key/key-id` の形式で ARN を入力します。`arn:aws:kms:region:account-id:alias/alias-name` など、キーのエイリアスで ARN を指定することもできます。

**詳細設定: ジョブブックマークの暗号化**  
クライアント側 (CSE-KMS) 暗号化は、ジョブのブックマークを暗号化するために使用されます。このフィールドはオプションです。ブックマークデータは、Amazon S3 に保存するために送信される前に暗号化されます。有効にするには、AWS KMS キーを選択するか、または [**Enter a key ARN**] (キーの ARN を入力)を選択してキーの ARN を指定します。`arn:aws:kms:region:account-id:key/key-id` の形式で ARN を入力します。`arn:aws:kms:region:account-id:alias/alias-name` など、キーのエイリアスで ARN を指定することもできます。

詳細については、*Amazon Simple Storage Service コンソールユーザーガイド*の以下のトピックを参照してください。
+ `SSE-S3` の詳細については、「[Amazon S3 で管理された暗号化キーによるサーバー側の暗号化 (SSE-S3) を使用したデータの保護](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html)」を参照してください。
+ `SSE-KMS` の詳細については、「[AWS KMS keys によるサーバー側の暗号化を使用したデータの保護](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html)」を参照してください。
+ `CSE-KMS` の詳細については、「[AWS KMS に保存されている KMS キーの使用](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingClientSideEncryption.html#client-side-encryption-kms-managed-master-key-intro)」を参照してください。

# Encrypting data in transit
<a name="encryption-in-transit"></a>



AWS は転送中のデータに対して Transport Layer Security (TLS) 暗号化を提供します。AWS Glue の [[security configurations]](https://docs.aws.amazon.com/glue/latest/dg/console-security-configurations.html) (セキュリティ設定) を使用して、クローラー、ETL ジョブ、開発エンドポイントの暗号化を設定できます。Data Catalog の設定を介して、AWS Glue Data Catalog 暗号化を有効にできます。

2018 年 9 月 4 日現在、 (AWS KMS*bring your own key*と*server-side encryption*) が AWS Glue ETLおよび AWS Glue Data Catalog がサポートされています。

# FIPS 準拠
<a name="fips-compliance"></a>

コマンドラインインターフェイスまたは API を使用して AWS にアクセスするときに FIPS 140-2 検証済みの暗号化モジュールが必要な場合は、FIPS エンドポイントを使用します。利用可能な FIPS エンドポイントの詳細については、「[連邦情報処理規格 (FIPS) 140-2](https://aws.amazon.com/compliance/fips/)」を参照してください。

# キーの管理
<a name="key-management"></a>

AWS Glue で AWS Identity and Access Management (IAM) を使用して、ユーザー、AWS リソース、グループ、ロール、およびアクセスや拒否などに関する詳細なポリシーを定義できます。

組織のニーズに応じて、リソースベースのポリシーとアイデンティティベースのポリシーの両方を使用してメタデータへのアクセスを定義できます。リソースベースのポリシーでは、リソースへのアクセスを許可または拒否するプリンシパルを一覧表示し、クロスアカウントアクセスなどのポリシーを設定できます。アイデンティティポリシーは、IAM 内の特定のユーザー、グループ、およびロールにアタッチします。

詳細な例については、AWS ビッグデータブログ「[リソースレベルの IAM アクセス許可とリソースベースのポリシーで、AWS Glue Data Catalog へのアクセスを制限する](https://aws.amazon.com/blogs/big-data/restrict-access-to-your-aws-glue-data-catalog-with-resource-level-iam-permissions-and-resource-based-policies/)」を参照してください。

ポリシーの詳細なアクセス部分については、`Resource` 句内で定義します。この部分では、アクションを実行する対象の AWS Glue Data Catalog オブジェクトと、このオペレーションで返される結果のオブジェクトの両方を定義します。

*開発エンドポイント*は、AWS Glue スクリプトの開発およびテストに使用できる環境です。開発エンドポイントの SSH キーを追加、削除、または変更できます。

2018 年 9 月 4 日現在、AWS KMS ETLおよび AWS Glue の (AWS Glue Data Catalog*bring your own key* と *server-side encryption*) がサポートされています。

# AWS の他のサービスへの AWS Glue の依存関係
<a name="dependency-on-other-services"></a>

ユーザーが AWS Glue コンソールを使用するには、AWS アカウントで AWS Glue リソースの使用を許可する最小限のアクセス許可セットが必要です。これらの AWS Glue アクセス許可に加えて、コンソールでは次のサービスからのアクセス許可が必要になります。
+ ログを表示するための Amazon CloudWatch Logs のアクセス許可。
+ ロールをリスト化して渡すための AWS Identity and Access Management (IAM) のアクセス許可。
+ スタックを操作する CloudFormation のアクセス許可。
+ Virtual Private Cloud (VPC)、サブネット、セキュリティグループ、インスタンスなどのオブジェクトをリストする Amazon Elastic Compute Cloud (Amazon EC2) のアクセス許可 (ジョブ、クローラーの実行時や、開発エンドポイントの作成時の VPC などの Amazon EC2 項目をセットアップするため)。
+ バケットとオブジェクトをリストし、スクリプトを取得して保存する Amazon Simple Storage Service (Amazon S3) のアクセス許可。
+ クラスターでの作業に必要な Amazon Redshift のアクセス許可。
+ インスタンスをリスト化するための Amazon Relational Database Service (Amazon RDS) のアクセス許可。

# 開発エンドポイント
<a name="dev-endpoints"></a>

開発エンドポイントは、AWS Glue スクリプトの作成およびテストに使用できる環境です。AWS Glue を使用して、開発エンドポイントを作成、編集、削除できます。作成されたすべての開発エンドポイントを一覧表示できます。開発エンドポイントの SSH キーを追加、削除、または変更できます。開発エンドポイントで使用するノートブックを作成することもできます。

開発環境をプロビジョニングするための設定値を提供します。これらの値は、開発エンドポイントに安全にアクセスし、エンドポイントからデータストアにアクセスできるようにネットワークを設定する方法を AWS Glue に指定します。次に、開発エンドポイントに接続するノートブックを作成できます。ノートブックを使用して ETL スクリプトを作成し、テストします。

AWS Glue の ETL ジョブの実行に使用する IAM ロールと同様のアクセス許可を持つ AWS Identity and Access Management (IAM) ロールを使用します。Virtual Private Cloud (VPC)、サブネット、セキュリティグループを使用して、データリソースに安全に接続できる開発エンドポイントを作成します。SSH を使用して開発環境に接続するための SSH キーペアを生成します。

JDBC を通じてデータセットにアクセスするために使用できる VPC 内で、Amazon S3 のデータ用の開発エンドポイントを作成できます。

ローカルマシンに Jupyter Notebook クライアントをインストールし、これを使用して開発エンドポイントで ETL スクリプトをデバッグおよびテストできます。または Sagemaker ノートブックを使用して、AWS 上の JupyterLab で ETL スクリプトを記述できます。「[開発エンドポイントで Amazon SageMaker ノートブックを使用する](https://docs.aws.amazon.com/glue/latest/dg/dev-endpoint-tutorial-sage.html)」を参照してください。

AWS Glue は、`aws-glue-dev-endpoint` をプレフィックスとする名前を Amazon EC2 インスタンスにタグ付けします。

開発エンドポイントにノートブックサーバーをセットアップして、AWS Glue 拡張機能で PySpark を実行できます。