Перейти к основному содержимому
Версия: 2.0.x

Аутентификация для доступа к Google Cloud Storage

Методы аутентификации

Начиная с версии v1.5.2, Selena поддерживает один из следующих методов аутентификации для доступа к Google Cloud Storage (GCS):

  • Аутентификация на основе VM

    Использование учётных данных, прикреплённых к Google Cloud Compute Engine, для аутентификации GCS.

  • Аутентификация на основе сервисного аккаунта

    Использование сервисного аккаунта для аутентификации GCS.

  • Аутентификация на основе имперсонации

    Позволяет сервисному аккаунту или экземпляру виртуальной машины (VM) имперсонировать другой сервисный аккаунт.

Сценарии

Selena может аутентифицироваться в GCS в следующих сценариях:

  • Пакетная загрузка данных из GCS.
  • Резервное копирование данных в GCS и восстановление данных из GCS.
  • Запрос файлов Parquet и ORC в GCS.
  • Запрос таблиц Hive, Iceberg, Hudi и Delta Lake в GCS.

В этом разделе каталог Hive, файловая внешняя таблица и Broker Load используются в качестве примеров, показывающих, как Selena интегрируется с GCS в различных сценариях. Информацию о StorageCredentialParams в примерах см. в разделе "Параметры" этого документа.

ПРИМЕЧАНИЕ

Selena поддерживает загрузку данных или прямой запрос файлов из GCS только по протоколу gs. Поэтому при загрузке данных или запросе файлов из GCS вы должны включить gs в качестве префикса в пути к файлу.

Внешний каталог

Используйте оператор CREATE EXTERNAL CATALOG для создания каталога Hive с именем hive_catalog_gcs следующим образом, чтобы запрашивать файлы из GCS:

CREATE EXTERNAL CATALOG hive_catalog_gcs
PROPERTIES
(
"type" = "hive",
"hive.metastore.uris" = "thrift://xx.xx.xx.xx:9083",
StorageCredentialParams
);

Файловая внешняя таблица

Используйте оператор CREATE EXTERNAL TABLE для создания файловой внешней таблицы с именем external_table_gcs следующим образом, чтобы запрашивать файл данных с именем test_file_external_tbl из GCS без какого-либо хранилища метаданных:

CREATE EXTERNAL TABLE external_table_gcs
(
id varchar(65500),
attributes map<varchar(100), varchar(2000)>
)
ENGINE=FILE
PROPERTIES
(
"path" = "gs:////test-gcs/test_file_external_tbl",
"format" = "ORC",
StorageCredentialParams
);

Broker load

Используйте оператор LOAD LABEL для создания задания Broker Load с меткой test_db.label000, чтобы пакетно загрузить данные из GCS в таблицу Selena target_table:

LOAD LABEL test_db.label000
(
DATA INFILE("gs://bucket_gcs/test_brokerload_ingestion/*")
INTO TABLE target_table
FORMAT AS "parquet"
)
WITH BROKER
(
StorageCredentialParams
);

Параметры

StorageCredentialParams представляет набор параметров, описывающих, как аутентифицироваться в GCS с использованием различных методов аутентификации.

Аутентификация на основе VM

Если ваш cluster Selena развёрнут на экземпляре VM, размещённом на Google Cloud Platform (GCP), и вы хотите использовать этот экземпляр VM для аутентификации GCS, настройте StorageCredentialParams следующим образом:

"gcp.gcs.use_compute_engine_service_account" = "true"

В следующей таблице описаны параметры, которые необходимо настроить в StorageCredentialParams.

ПараметрЗначение по умолчаниюПример значенияОписание
gcp.gcs.use_compute_engine_service_accountfalsetrueУказывает, следует ли напрямую использовать сервисный аккаунт, привязанный к вашему Compute Engine.

Аутентификация на основе сервисного аккаунта

Если вы напрямую используете сервисный аккаунт для аутентификации GCS, настройте StorageCredentialParams следующим образом:

"gcp.gcs.service_account_email" = "<google_service_account_email>",
"gcp.gcs.service_account_private_key_id" = "<google_service_private_key_id>",
"gcp.gcs.service_account_private_key" = "<google_service_private_key>"

В следующей таблице описаны параметры, которые необходимо настроить в StorageCredentialParams.

ПараметрЗначение по умолчаниюПример значенияОписание
gcp.gcs.service_account_email"""user@hello.iam.gserviceaccount.com"Адрес электронной почты в JSON-файле, сгенерированном при создании сервисного аккаунта.
gcp.gcs.service_account_private_key_id"""61d257bd8479547cb3e04f0b9b6b9ca07af3b7ea"ID закрытого ключа в JSON-файле, сгенерированном при создании сервисного аккаунта.
gcp.gcs.service_account_private_key"""-----BEGIN PRIVATE KEY----xxxx-----END PRIVATE KEY-----\n"Закрытый ключ в JSON-файле, сгенерированном при создании сервисного аккаунта.

Аутентификация на основе имперсонации

Имперсонация сервисного аккаунта экземпляром VM

Если ваш cluster Selena развёрнут на экземпляре VM, размещённом на GCP, и вы хотите, чтобы этот экземпляр VM имперсонировал сервисный аккаунт, чтобы Selena унаследовала привилегии от сервисного аккаунта для доступа к GCS, настройте StorageCredentialParams следующим образом:

"gcp.gcs.use_compute_engine_service_account" = "true",
"gcp.gcs.impersonation_service_account" = "<assumed_google_service_account_email>"

В следующей таблице описаны параметры, которые необходимо настроить в StorageCredentialParams.

ПараметрЗначение по умолчаниюПример значенияОписание
gcp.gcs.use_compute_engine_service_accountfalsetrueУказывает, следует ли напрямую использовать сервисный аккаунт, привязанный к вашему Compute Engine.
gcp.gcs.impersonation_service_account"""hello"Сервисный аккаунт, который вы хотите имперсонировать.

Имперсонация одного сервисного аккаунта другим

Если вы хотите, чтобы один сервисный аккаунт (временно называемый мета-сервисным аккаунтом) имперсонировал другой сервисный аккаунт (временно называемый сервисным аккаунтом данных) и чтобы Selena унаследовала привилегии от сервисного аккаунта данных для доступа к GCS, настройте StorageCredentialParams следующим образом:

"gcp.gcs.service_account_email" = "<google_service_account_email>",
"gcp.gcs.service_account_private_key_id" = "<meta_google_service_account_email>",
"gcp.gcs.service_account_private_key" = "<meta_google_service_account_email>",
"gcp.gcs.impersonation_service_account" = "<data_google_service_account_email>"

В следующей таблице описаны параметры, которые необходимо настроить в StorageCredentialParams.

ПараметрЗначение по умолчаниюПример значенияОписание
gcp.gcs.service_account_email"""user@hello.iam.gserviceaccount.com"Адрес электронной почты в JSON-файле, сгенерированном при создании мета-сервисного аккаунта.
gcp.gcs.service_account_private_key_id"""61d257bd8479547cb3e04f0b9b6b9ca07af3b7ea"ID закрытого ключа в JSON-файле, сгенерированном при создании мета-сервисного аккаунта.
gcp.gcs.service_account_private_key"""-----BEGIN PRIVATE KEY----xxxx-----END PRIVATE KEY-----\n"Закрытый ключ в JSON-файле, сгенерированном при создании мета-сервисного аккаунта.
gcp.gcs.impersonation_service_account"""hello"Сервисный аккаунт данных, который вы хотите имперсонировать.