Управление статическими ключами доступа
Часть сервисов Yandex Cloud поддерживает аутентификацию с помощью статических ключей доступа.
Статические ключи доступа создаются для сервисных аккаунтов. Если у вас еще нет сервисного аккаунта, создайте его и назначьте ему роли.
Создать статический ключ доступа
Чтобы создать статический ключ доступа сервисного аккаунта:
-
В консоли управления
перейдите в каталог, которому принадлежит сервисный аккаунт. -
В списке сервисов выберите Identity and Access Management.
-
На панели слева выберите
Сервисные аккаунты. -
Выберите сервисный аккаунт, для которого вы хотите создать статический ключ доступа.
-
На панели сверху нажмите кнопку
Создать новый ключ и выберите Создать статический ключ доступа. -
Задайте описание ключа и нажмите кнопку Создать.
-
Сохраните идентификатор и секретный ключ.
Внимание
После закрытия диалога значение ключа будет недоступно.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Посмотрите описание команды создания статического ключа доступа:
yc iam access-key create --help
-
Выберите сервисный аккаунт, например
my-robot
:yc iam service-account list
Результат:
+----------------------+------------------+-------------------------------+ | ID | NAME | DESCRIPTION | +----------------------+------------------+-------------------------------+ | aje6o61dvog2******** | my-robot | | | aje9sda1ufvq******** | account_name | account_description | +----------------------+------------------+-------------------------------+
-
Создайте ключ доступа для сервисного аккаунта
my-robot
:yc iam access-key create --service-account-name my-robot
Результат:
access_key: id: aje6t3vsbj8l******** service_account_id: ajepg0mjt06s******** created_at: "2018-11-22T14:37:51Z" key_id: 0n8X6WY6S24N******** secret: JyTRFdqw8t1kh2-OJNz4JX5ZTz9Dj1rI********
-
Сохраните идентификатор
key_id
и секретный ключsecret
. Повторно получить значение ключа будет невозможно.
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Опишите в конфигурационном файле параметры ресурсов, которые необходимо создать:
resource "yandex_iam_service_account_static_access_key" "sa-static-key" { service_account_id = "<идентификатор_сервисного_аккаунта>" description = "<описание_ключа>" pgp_key = "keybase:keybaseusername" output_to_lockbox { secret_id = "<идентификатор_секрета_Lockbox>" entry_for_access_key = "<ключ_секрета_для_идентификатора_статического_ключа>" entry_for_secret_key = "<ключ_секрета_для_секретного_ключа>" } }
Где:
-
service_account_id
— идентификатор сервисного аккаунта. Обязательный параметр. -
description
— описание ключа. Необязательный параметр. -
pgp_key
— дополнительный PGP-ключ для шифрования закрытого ключа. Необязательный параметр. Указывается публичная часть ключа в кодировке base64, либо в видеkeybase:keybaseusername
. -
output_to_lockbox
— описание секрета Yandex Lockbox, в который будут сохранены секретные значения ключа, во избежание их возможной утечки через файл состоянияterraform.tfstate
. Необязательный параметр. Вложенные параметры:secret_id
— идентификатор секрета Yandex Lockbox, в который будут сохранены идентификатор ключа и секретный ключ. Секрет должен быть пользовательского типа.entry_for_access_key
— ключ секрета, который будет присвоен сохраняемому значению идентификатора статического ключа доступа.entry_for_secret_key
— ключ секрета, который будет присвоен сохраняемому значению секретного ключа.
Более подробную информацию о параметрах ресурса
yandex_iam_service_account_static_access_key
в Terraform, см. в документации провайдера . -
-
Проверьте корректность конфигурационных файлов.
-
В командной строке перейдите в папку, где вы создали конфигурационный файл.
-
Выполните проверку с помощью команды:
terraform plan
Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, Terraform на них укажет.
-
-
Разверните облачные ресурсы.
-
Если в конфигурации нет ошибок, выполните команду:
terraform apply
-
Подтвердите создание статического ключа доступа: введите в терминал слово
yes
и нажмите Enter.Если при создании ключа возникли ошибки, Terraform на них укажет.
При успешном создании ключа Terraform запишет его в свою конфигурацию, но не покажет пользователю. В терминал будет выведен только id созданного ключа.Проверить появление ключа у сервисного аккаунта можно в консоли управления
или с помощью команды CLI:yc iam access-key list --service-account-name=<имя_сервисного_аккаунта>
-
Воспользуйтесь методом REST API create для ресурса AccessKey или вызовом gRPC API AccessKeyService/Create.
Примеры
Добавить описание при создании
Добавьте описание при создании ключа доступа.
yc iam access-key create \
--service-account-name my-robot \
--description "this key is for my bucket"
resource "yandex_iam_service_account_static_access_key" "sa-static-key" {
service_account_id = "<идентификатор_сервисного_аккаунта>"
description = "this key is for my bucket"
pgp_key = "BIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA+x....."
}
curl \
--request POST \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer <IAM-токен>" \
--data '{
"serviceAccountId": "<идентификатор_сервисного_аккаунта>",
"description": "this key is for my bucket"
}' \
https://iam.api.cloud.yandex.net/iam/aws-compatibility/v1/accessKeys
Удалить статический ключ доступа
Чтобы удалить статический ключ доступа сервисного аккаунта:
- В консоли управления
перейдите в каталог, которому принадлежит сервисный аккаунт. - В списке сервисов выберите Identity and Access Management.
- На панели слева выберите
Сервисные аккаунты и выберите нужный сервисный аккаунт. - В блоке Ключи доступа в строке с ключом, который нужно удалить, нажмите значок
и выберите Удалить. - В открывшемся окне нажмите кнопку Удалить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Получите список статических ключей доступа сервисного аккаунта, указав его имя:
yc iam access-key list \ --service-account-name <имя_сервисного_аккаунта>
Результат:
+----------------------+----------------------+----------------------+ | ID | SERVICE ACCOUNT ID | KEY ID | +----------------------+----------------------+----------------------+ | aje8bdtqec6l******** | ajeedllrkjma******** | R9JK04o1Dfaf******** | | ajegqpa91bta******** | ajeedllrkjma******** | cWXGkDoBRho5******** | +----------------------+----------------------+----------------------+
-
Удалите статический ключ доступа, указав его идентификатор:
yc iam access-key delete <идентификатор_ключа>
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Откройте файл конфигурации Terraform и удалите секцию с описанием статического ключа доступа.
Пример описания статического ключа доступа в конфигурации Terraform:
resource "yandex_iam_service_account_static_access_key" "sa-static-key" { service_account_id = "<идентификатор_сервисного_аккаунта>" description = "<описание_ключа>" pgp_key = "keybase:keybaseusername" output_to_lockbox { secret_id = "<идентификатор_секрета_Lockbox>" entry_for_access_key = "<ключ_секрета_для_идентификатора_статического_ключа>" entry_for_secret_key = "<ключ_секрета_для_секретного_ключа>" } }
Более подробную информацию о ресурсах, которые вы можете создать с помощью Terraform, см. в документации провайдера
. -
Проверьте корректность конфигурационных файлов.
-
В командной строке перейдите в папку, где вы создали конфигурационный файл.
-
Выполните проверку с помощью команды:
terraform plan
Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, Terraform на них укажет.
-
-
Разверните облачные ресурсы.
-
Если в конфигурации нет ошибок, выполните команду:
terraform apply
-
Подтвердите создание или удаление ресурсов: введите в терминал слово
yes
и нажмите Enter.
После этого в указанном каталоге будут созданы или удалены все требуемые ресурсы. Проверить появление ресурсов и их настройки или удаление ресурсов можно в консоли управления
, а также с помощью команды CLI:yc iam access-key list --service-account-id <идентификатор_сервисного_аккаунта>
-
Воспользуйтесь методом REST API delete для ресурса AccessKey или вызовом gRPC API AccessKeyService/Delete.