Поделиться через


Настройка шифрования для S3 с помощью KMS

В этой статье описывается настройка шифрования на стороне сервера с помощью ключа KMS для чтения файлов в путях s3a:// с помощью Unity Catalog. Он предоставляется для пользователей, которым нужен межоблачный доступ к внешним таблицам и томам в зашифрованных контейнерах S3.

Настройка шифрования для S3 с помощью каталога Unity

Вы можете настроить шифрование на стороне сервера, чтобы разрешить внешним таблицам и томам в каталоге Unity доступ к данным в S3. Шифрование SSE не поддерживается для внешних таблиц, которые доступны через Delta Sharing.

Шаг 1. Обновление политики ключей KMS в AWS

Для защиты данных в S3 AWS поддерживает шифрование на стороне сервера (SSE) с помощью управляемых ключей Amazon S3 (SSE-S3) или ключей AWS KMS (SSE-KMS). Если вы используете управляемый ключ AWS S3, перейдите к шагу 2.

  1. В AWS перейдите в службу KMS.

  2. Щелкните ключ, к которому требуется добавить разрешение.

  3. В разделе "Политика ключей " выберите "Перейти к представлению политики".

  4. Измените раздел политики ключей, позволяющий S3 использовать ключ, например:

    {
        "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. Настройка доступа к S3 с помощью каталога Unity

  1. Создайте учетные данные хранения для подключения к S3, используя инструкции в статье "Создание учетных данных хранилища для подключения к Azure Data Lake Storage".

    Убедитесь, что вы создаете политику IAM в той же учетной записи, что и контейнер S3. Если вы используете SSE-KMS, включите в политику следующее:

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

    См. шаг 1. Создание роли IAM.

  2. Создайте внешнее расположение для подключения к S3, используя инструкции из статьи "Создание внешнего расположения для подключения облачного хранилища к Azure Databricks".

  3. Настройте шифрование на стороне сервера во внешнем расположении, используя инструкции, описанные в статье "Настройка алгоритма шифрования в внешнем расположении (только AWS S3)".