Настройка сервисного аккаунта#

Для работы с ресурсами Yandex Cloud можно использовать учетную запись обычного пользователя, однако, для средств автоматизации лучше подходит сервисный аккаунт.

Для подготовки сервисного аккаунта Yandex Cloud к работе c Astra Automation выполните следующие действия:

  1. Если клиент командной строки Yandex Cloud не настроен, следуйте инструкциям из секции Установка и настройка интерфейса командной строки YC CLI.

  2. Убедитесь, что сервисный аккаунт существует и ему назначены необходимые роли.

  3. Создайте ключ доступа к ресурсам каталога.

  4. (Опционально) Создайте статический ключ доступа к бакету Yandex Object Storage.

Проверка наличия необходимых ролей#

Для управления ресурсами сервисному аккаунту должны быть назначены роли, дающие необходимые привилегии.

Примечание

Роль editor дает привилегии на создание, изменение и удаление любых типов ресурсов в каталоге, однако, в большинстве случаев столь широкие полномочия избыточны. Для более тонкой настройки ознакомьтесь со списком всех ролей, предоставляемых Yandex Cloud, и назначьте сервисному аккаунту только те роли, которые действительно необходимы.

Если сервисный аккаунт уже существует, убедитесь, что ему назначены роли, позволяющие управлять необходимыми типами ресурсов:

yc resource-manager folder list-access-bindings <folder_name|folder_ID> | grep <sa_ID>

В терминал выводится таблица, отображающая список ролей, назначенных сервисному аккаунту с указанным идентификатором <sa_ID>.

+------------------+----------------+----------------------+
|     ROLE ID      |  SUBJECT TYPE  |      SUBJECT ID      |
+------------------+----------------+----------------------+
| storage.uploader | serviceAccount | a..................1 |
| editor           | serviceAccount | a..................1 |
+------------------+----------------+----------------------+

Создание сервисного аккаунта#

Если сервисный аккаунт не существует, создайте его:

yc iam service-account create \
   --name=<sa_name> \
   --description="<description>"

где

  • <sa_name> – имя сервисного аккаунта. Должно удовлетворять следующим требованиям:

    • длина от 3 до 63 символов;

    • может содержать только строчные буквы латинского алфавита, цифры и дефисы;

    • первый символ – буква;

    • последний символ – не дефис;

    • имя должно быть уникальным в рамках облака.

  • <description> – опциональное описание сервисного аккаунта.

Подробности о создании сервисных аккаунтов см. в документации Yandex Cloud.

Назначение ролей сервисному аккаунту#

Чтобы назначить сервисному аккаунту роль на каталог, выполните команду:

yc resource-manager folder add-access-binding \
   --name <folder_name> \
   --role <role_name> \
   --service-account-name <sa_name>

где

  • <folder_name> – имя облачного каталога;

  • <role_name> – имя роли;

  • <sa_name> – имя сервисного аккаунта.

Подробности о назначении ролей сервисным аккаунтам см. в документации Yandex Cloud.

Создание пары авторизованных ключей доступа#

Чтобы создать пару авторизованных ключей доступа к облачному каталогу и сохранить ее в файл формата JSON, выполните команду:

yc iam key create \
   --service-account-name <sa_name> \
   --output key.json

где

  • <sa_name> – имя сервисного аккаунта;

  • key.json – имя файла для сохранения пары ключей.

При успешном выполнении команды в терминал выводится информация о созданной паре ключей, например:

id: ajonetwothreefoursp63
service_account_id: aj**************o3
created_at: "2023-03-21T08:13:19.002945823Z"
key_algorithm: RSA_2048

Пример содержимого файла key.json (ключи представлены в сокращенном виде):

{
   "id": "ajonetwothreefoursp63",
   "service_account_id": "aj**************o3",
   "created_at": "2023-03-21T08:13:19.002945823Z",
   "key_algorithm": "RSA_2048",
   "public_key": "-----BEGIN PUBLIC KEY-----\nMIIBI...DAQAB\n-----END PUBLIC KEY-----\n",
   "private_key": "-----BEGIN...END PRIVATE KEY-----\n"
}

Подробности о создании авторизованных ключей доступа см. в документации Yandex Cloud.

Создание AWS-совместимого статического ключа доступа#

Примечание

Создавайте AWS-совместимый статический ключ доступа в том случае, если планируете использовать бакет Yandex Object Storage для хранения объектов состояния Terraform.

Чтобы создать AWS-совместимый статический ключ доступа для сервисного аккаунта, выполните команду:

yc iam access-key create --service-account-name <sa_name>

При успешном выполнении команды в терминал выводится информация о созданном ключе, например:

access_key:
  id: aj**************ml
  service_account_id: aj**************o3
  created_at: "2023-08-16T10:52:39.234764687Z"
  key_id: YC********************-
secret: YC*************************s

Сохраните значения полей key_id и secret – они понадобятся в дальнейшем.

Подробности о создании AWS-совместимых статических ключей доступа для сервисных аккаунтов см. в документации Yandex Cloud.