Перейти к основному содержимому

Аутентификация в Google Cloud Storage

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

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

  • Аутентификация на основе виртуальной машины

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

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

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

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

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

Сценарии

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

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

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

ПРИМЕЧАНИЕ

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

External catalog

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

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

File external table

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

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 с помощью различных методов аутентификации.

Аутентификация на основе виртуальной машины

Если ваш кластер Selena развернут на экземпляре виртуальной машины, размещенном на Google Cloud Platform (GCP), и вы хотите использовать этот экземпляр виртуальной машины для аутентификации в 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"Идентификатор закрытого ключа в JSON-файле, созданном при создании сервисного аккаунта.
gcp.gcs.service_account_private_key"""-----BEGIN PRIVATE KEY----xxxx-----END PRIVATE KEY-----\n"Закрытый ключ в JSON-файле, созданном при создании сервисного аккаунта.

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

Заставить экземпляр виртуальной машины выдавать себя за сервисный аккаунт

Если ваш кластер Selena развернут на экземпляре виртуальной машины, размещенном на GCP, и вы хотите заставить этот экземпляр виртуальной машины выдавать себя за сервисный аккаунт, чтобы 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"Идентификатор закрытого ключа в JSON-файле, созданном при создании мета-сервисного аккаунта.
gcp.gcs.service_account_private_key"""-----BEGIN PRIVATE KEY----xxxx-----END PRIVATE KEY-----\n"Закрытый ключ в JSON-файле, созданном при создании мета-сервисного аккаунта.
gcp.gcs.impersonation_service_account"""hello"Сервисный аккаунт данных, за который вы хотите выдавать себя.