KMS を使用した S3 の暗号化の設定
このページでは、Unity Catalog を使用して s3a://
パス内のファイルを読み取るための KMS キーを使用してサーバー側の暗号化を構成する方法について説明します。これは、暗号化された S3 バケット内の外部テーブルおよびボリュームへのクロスクラウドアクセスを必要とするユーザー向けに提供されます。
Unity Catalog を使用して S3 の暗号化を構成する
AWS は、クライアントが暗号化ヘッダーを設定する必要がある S3 バケットポリシーをサポートしています。S3バケットがリクエストに暗号化ヘッダーを必要とする場合は、 Unity Catalogの外部ロケーションで暗号化アルゴリズムを設定する必要があります。この設定により、S3 バケット内のデータにアクセスするときに正しいヘッダーが設定されます。SSE 暗号化は、Delta Sharing を使用して共有される外部テーブルではサポートされていません。
ステップ 1: AWS で KMS キーポリシーを更新する
S3 のデータを保護するために、AWS は Amazon S3 マネージドキー (SSE-S3) または AWS KMS キー (SSE-KMS) を使用したサーバー側の暗号化 (SSE) をサポートしています。 AWS S3 マネージドキーを使用する場合は、ステップ 2 に進みます。
-
AWS で、KMS サービスに移動します。
-
権限を追加するキーをクリックします。
-
Key ポリシー セクションで、[ ポリシー ビューに切り替える ] を選択します。
-
S3 がキーを使用できるようにするキーポリシーセクションを編集します。たとえば、次のようにします。
JSON{
"Sid": "Allow access through S3 for all principals in the account that are authorized to use S3",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:DescribeKey"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"kms:CallerAccount": "<AWS ACCOUNT ID>",
"kms:ViaService": "s3.<REGION>.amazonaws.com"
}
}
}, -
[変更を保存] をクリックします。
手順 2: Unity Catalog を使用して S3 へのアクセスを構成する
-
「Google Cloud Storage に接続するためのストレージ認証情報を作成する」の手順に従って、S3 に接続するためのストレージ認証情報を作成します。
IAM ポリシーは、S3 バケットと同じアカウントに作成してください。 SSE-KMS を使用している場合は、ポリシーに次のものを含めます。
JSON{
"Action": [
"kms:Decrypt",
"kms:Encrypt",
"kms:GenerateDataKey*"
],
"Resource": [
"arn:aws:kms:<KMS-KEY>"
],
"Effect": "Allow"
},「ステップ 1: IAMロールを作成する」を参照してください。
-
カタログエクスプローラーまたは SQL を使用して S3 に接続するための外部ロケーションを作成します。
-
「外部ロケーションでの暗号化アルゴリズムの構成 (AWS S3のみ)」の手順に従って、外部ロケーションでサーバー側の暗号化を構成します。