メインコンテンツまでスキップ

KMS を使用した S3 の暗号化の設定

この記事では、KMS s3a://Unity Catalogまたはインスタンスプロファイル (従来の構成) を使用して パスにファイルを書き込むための キーを使用してサーバー側の暗号化を構成する方法について説明します。ワークスペースストレージバケットを暗号化するには、「 ワークスペースストレージの顧客管理キー」を参照してください。

Unity Catalog を使用して S3 の暗号化を構成する

サーバー側の暗号化を構成して、Unity Catalog の外部テーブルとボリュームが S3 のデータにアクセスできるようにすることができます。 SSE 暗号化は、Delta Sharing を使用して共有される外部テーブルではサポートされていません。

ステップ 1: AWS で KMS キーポリシーを更新する

S3 のデータを保護するために、AWS は Amazon S3 マネージドキー (SSE-S3) または AWS KMS キー (SSE-KMS) を使用したサーバー側の暗号化 (SSE) をサポートしています。 AWS S3 マネージドキーを使用する場合は、ステップ 2 に進みます。

  1. AWS で、KMS サービスに移動します。

  2. 権限を追加するキーをクリックします。

  3. [Key ポリシー ] セクションで、[ ポリシー ビューに切り替える ] を選択します。

  4. 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"
    }
    }
    },
  5. [変更を保存] をクリックします。

手順 2: Unity Catalog を使用して S3 へのアクセスを構成する

  1. 「AWS S3 に接続するためのストレージ認証情報を作成する」の手順に従って、S3 に接続するためのストレージ認証情報を作成します。

    IAM ポリシーは、S3 バケットと同じアカウントに作成してください。 SSE-KMS を使用している場合は、ポリシーに次のものを含めます。

    JSON
      {
    "Action": [
    "kms:Decrypt",
    "kms:Encrypt",
    "kms:GenerateDataKey*"
    ],
    "Resource": [
    "arn:aws:kms:<KMS-KEY>"
    ],
    "Effect": "Allow"
    },

    「ステップ 1: IAMロールを作成する」を参照してください。

  2. 「クラウド ストレージを に接続するための外部ロケーションを作成するS3 」の手順に従って、に接続するための外部ロケーションを作成します。Databricks

  3. 「外部ロケーションでの暗号化アルゴリズムの構成」の手順に従って、外部ロケーションでサーバー側の暗号化を構成します。

インスタンスプロファイルを使用した S3 の暗号化の設定 (レガシー)

インスタンスプロファイルを使用して、S3 と KMS の暗号化を設定できます。 ただし、これは従来のパターンであるため、Databricks では、Unity Catalog を使用して S3 とボリュームへのアクセスを構成し、ファイルを直接操作することをお勧めします。 「Unity Catalog を使用してクラウド オブジェクト ストレージとサービスに接続する」を参照してください。

ステップ 1: インスタンスプロファイルを設定する

Databricksで、インスタンスプロファイルを作成します。

ステップ 2: 設定で指定された KMS キーのキーユーザーとしてインスタンスプロファイルを追加する

  1. AWS で、KMS サービスに移動します。
  2. 権限を追加したいキーをクリックします。
  3. 「キーユーザー」セクションで、「 追加 」をクリックします。
  4. IAMロールの横にあるチェックボックスを選択します。
  5. [ 追加 ] をクリックします。

ステップ 3: 暗号化プロパティを設定する

グローバル KMS 暗号化のプロパティは、 Spark 構成 または initスクリプトで設定します。独自のキー ARN を使用して spark.hadoop.fs.s3a.server-side-encryption.key キーを設定します。

Add the following to your Spark configuration:

ini
spark.hadoop.fs.s3a.server-side-encryption.key arn:aws:kms:<region>:<aws-account-id>:key/<bbbbbbbb-ddd-ffff-aaa-bdddddddddd>
spark.hadoop.fs.s3a.server-side-encryption-algorithm SSE-KMS

You can also configure per-bucket KMS encryption. For example, you can configure each bucket individually using the following keys:

ini
# Set up authentication and endpoint for a specific bucket
spark.hadoop.fs.s3a.bucket.<bucket-name>.aws.credentials.provider <aws-credentials-provider-class>
spark.hadoop.fs.s3a.bucket.<bucket-name>.endpoint <aws-endpoint>

# Configure a different KMS encryption key for a specific bucket
spark.hadoop.fs.s3a.bucket.<bucket-name>.server-side-encryption.key <aws-kms-encryption-key>

For more information, see Per-bucket configuration.