Аутентификация в 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_account | false | true | Указывает, следует ли напрямую использовать сервисный аккаунт, привязанный к вашему 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_account | false | true | Указывает, следует ли напрямую использовать сервисный аккаунт, привязанный к вашему 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" | Сервисный аккаунт данных, за который вы хотите выдавать себя. |