BigQuery: Как настроить шифрование данных и управление доступом с помощью IAM и GServiceAccount?

Обзор шифрования данных в BigQuery: зачем это нужно?

Шифрование данных в BigQuery – это критически важный аспект защиты конфиденциальной информации. Оно гарантирует, что даже в случае несанкционированного доступа, данные останутся нечитаемыми без соответствующих ключей дешифрования. Это особенно важно для компаний, работающих с персональными данными, финансовой информацией или другими чувствительными данными, поскольку соответствует требованиям нормативных актов, таких как GDPR, HIPAA и другие.

Шифрование позволяет:

  • Защитить данные от утечек.
  • Соответствовать требованиям регуляторов.
  • Укрепить доверие клиентов.

Основные концепции IAM (Identity and Access Management) и GServiceAccount в контексте BigQuery

IAM (Identity and Access Management) – это система управления идентификацией и доступом в Google Cloud. Она позволяет контролировать, кто (идентичность) имеет доступ к каким ресурсам (например, наборам данных BigQuery) и что они могут с ними делать (роли). IAM обеспечивает централизованное управление разрешениями, упрощая администрирование и повышая безопасность.

GServiceAccount – это специальная учетная запись, используемая приложениями и виртуальными машинами для аутентификации в сервисах Google Cloud. В отличие от учетной записи пользователя, GServiceAccount не связана с конкретным человеком и предназначена для автоматизированного доступа к ресурсам.

В контексте BigQuery, IAM определяет, какие пользователи и GServiceAccount могут создавать, читать, изменять или удалять наборы данных, таблицы, представления и выполнять запросы. GServiceAccount часто используются для автоматизации процессов загрузки данных, выполнения запросов и управления ресурсами BigQuery.

Типы шифрования, поддерживаемые BigQuery (шифрование по умолчанию, ключи, управляемые клиентом (CMEK))

BigQuery предлагает два основных типа шифрования данных:

  1. Шифрование по умолчанию (Encryption at Rest by Default): BigQuery автоматически шифрует все данные, хранящиеся на дисках Google Cloud. Это шифрование прозрачно для пользователя и не требует дополнительной настройки. Google управляет ключами шифрования.
  2. Ключи, управляемые клиентом (CMEK — Customer-Managed Encryption Keys): Этот тип шифрования позволяет пользователям управлять ключами шифрования с помощью Cloud KMS (Key Management Service). Пользователь контролирует создание, хранение, ротацию и уничтожение ключей. CMEK обеспечивает максимальный контроль над безопасностью данных.

Настройка шифрования данных в BigQuery

Шифрование по умолчанию: как BigQuery обеспечивает защиту данных «из коробки»

BigQuery автоматически шифрует все данные, хранящиеся в сервисе, используя алгоритм AES-256. Google управляет ключами шифрования и выполняет ротацию ключей. Для большинства случаев использования шифрование по умолчанию обеспечивает достаточный уровень безопасности без каких-либо дополнительных усилий со стороны пользователя.

Использование ключей, управляемых клиентом (CMEK) для шифрования данных в BigQuery

CMEK предоставляет пользователям полный контроль над ключами шифрования, обеспечивая повышенную безопасность и соответствие требованиям регуляторов. Использование CMEK включает следующие шаги:

Реклама
  1. Создание ключа шифрования в Cloud KMS.
  2. Назначение ключа CMEK набору данных или таблице в BigQuery.

Создание и управление ключами шифрования в Cloud KMS

Для создания ключа шифрования в Cloud KMS можно использовать Google Cloud Console или gcloud CLI. Пример команды gcloud CLI:

gcloud kms keys create my-bigquery-key \
    --location=us-central1 \
    --keyring=my-keyring \
    --purpose=encryption \
    --default-algorithm=google-symmetric-encryption

Эта команда создает симметричный ключ шифрования с именем my-bigquery-key в ключевом кольце my-keyring в регионе us-central1. Рекомендуется использовать регион, расположенный близко к региону, где находятся ваши данные BigQuery.

Важно: Cloud KMS key rings и ключи должны находиться в том же регионе, что и набор данных BigQuery, который вы хотите зашифровать.

Назначение ключей CMEK наборы данных и таблицы в BigQuery

После создания ключа в Cloud KMS его необходимо назначить набору данных или таблице BigQuery. Пример назначения ключа CMEK при создании набора данных с использованием gcloud CLI:

gcloud bq mk --dataset \
--default_encryption_configuration=kms_key_name=projects/my-project/locations/us-central1/keyRings/my-keyring/cryptoKeys/my-bigquery-key \
    my-project:my_dataset

Пример обновления существующего набора данных для использования CMEK:

gcloud bq update --dataset \
--default_encryption_configuration=kms_key_name=projects/my-project/locations/us-central1/keyRings/my-keyring/cryptoKeys/my-bigquery-key \
    my-project:my_dataset

Для назначения ключа CMEK отдельной таблице можно использовать API BigQuery или Cloud Console.

Управление доступом к данным BigQuery с помощью IAM

Роли IAM для BigQuery: предопределенные и настраиваемые роли

IAM предоставляет набор предопределенных ролей для BigQuery, которые охватывают различные уровни доступа:

  • roles/bigquery.dataViewer: Только чтение данных.
  • roles/bigquery.dataEditor: Чтение и изменение данных.
  • roles/bigquery.jobUser: Запуск заданий BigQuery (запросы, загрузка данных).
  • roles/bigquery.admin: Полный контроль над ресурсами BigQuery.

Кроме предопределенных ролей, можно создавать настраиваемые роли IAM для предоставления более гранулярного доступа к ресурсам BigQuery. Настраиваемые роли позволяют точно определить, какие действия пользователи могут выполнять с данными BigQuery.

Предоставление доступа к наборам данных, таблицам и представлениям BigQuery с использованием IAM

Доступ к наборам данных, таблицам и представлениям BigQuery предоставляется путем назначения ролей IAM пользователям, группам Google или GServiceAccount. Доступ можно предоставить на уровне проекта, набора данных или таблицы. Предоставление доступа на уровне проекта дает доступ ко всем ресурсам BigQuery в проекте. Предоставление доступа на уровне набора данных дает доступ ко всем таблицам и представлениям в этом наборе данных. Предоставление доступа на уровне таблицы дает доступ только к этой таблице.

Пример предоставления роли roles/bigquery.dataViewer пользователю с помощью gcloud CLI:

gcloud projects add-iam-policy-binding my-project \
    --member='user:user@example.com' \
    --role='roles/bigquery.dataViewer'

Пример предоставления роли roles/bigquery.dataViewer на уровне набора данных:

«`bash
bq show —format=prettyjson my-project:my_dataset | \
jq ‘.access += [{


Добавить комментарий