Создание авторизованных ключей
Чтобы создать авторизованный ключ:
- В консоли управления
выберите каталог, которому принадлежит сервисный аккаунт. - В списке сервисов выберите Identity and Access Management.
- На панели слева выберите
Сервисные аккаунты. - В открывшемся списке выберите сервисный аккаунт, для которого вы хотите создать авторизованный ключ.
- Нажмите кнопку Создать новый ключ на верхней панели.
- Выберите пункт Создать авторизованный ключ.
- Выберите алгоритм шифрования.
- Задайте описание ключа и нажмите кнопку Создать.
- В открывшемся окне:
- Скопируйте открытый и закрытый ключи и надежно сохраните. Закрытый ключ не сохраняется в Yandex Cloud, открытый ключ нельзя будет посмотреть в консоли управления.
- Нажмите кнопку Закрыть.
Также вы можете скачать ключи одним файлом в формате JSON. Для этого нажмите кнопку Скачать файл с ключами.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
Создайте авторизованный ключ для сервисного аккаунта my-robot
:
yc iam key create --service-account-name my-robot -o my-robot-key.json
В случае успеха в файл my-robot-key.json
будет записан закрытый ключ (privateKey
) и идентификатор открытого ключа (id
).
Пример файла с ключом:
{
"id": "lfkoe35hsk58********",
"service_account_id": "ajepg0mjt06s********",
"created_at": "2019-03-20T10:04:56Z",
"key_algorithm": "RSA_2048",
"public_key": "-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----\n",
"private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n"
}
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Опишите в конфигурационном файле параметры ресурсов, которые необходимо создать:
service_account_id
— идентификатор сервисного аккаунта. Обязательный параметр.description
— описание ключа. Необязательный параметр.key_algorithm
— алгоритм генерации ключа. Необязательный параметр. По умолчанию используется алгоритмRSA_2048
. Допустимые значения параметра см. в документации API.pgp_key
— дополнительный PGP-ключ для шифрования закрытого ключа. Необязательный параметр. Указывается публичная часть ключа в кодировке base64, либо в видеkeybase:keybaseusername
.
Пример структуры конфигурационного файла:
resource "yandex_iam_service_account_key" "sa-auth-key" { service_account_id = "<идентификатор_сервисного_аккаунта>" description = "<описание_ключа>" key_algorithm = "<алгоритм_генерации_ключа>" pgp_key = "<pgp-ключ>" }
Более подробную информацию о ресурсах, которые вы можете создать с помощью Terraform, см. в документации провайдера
. -
Проверьте корректность конфигурационных файлов.
-
В командной строке перейдите в папку, где вы создали конфигурационный файл.
-
Выполните проверку с помощью команды:
terraform plan
Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, Terraform на них укажет.
-
-
Разверните облачные ресурсы.
-
Если в конфигурации нет ошибок, выполните команду:
terraform apply
-
Подтвердите создание ресурсов: введите в терминал слово
yes
и нажмите Enter.
После этого в указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
, а также с помощью команды CLI:yc iam key list --service-account-id <идентификатор_сервисного_аккаунта>
-
Чтобы создать ключ доступа, воспользуйтесь методом REST API create для ресурса Key или вызовом gRPC API KeyService/Create.
Пример запроса с помощью cURL для метода REST API create
:
curl \
--request POST \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer <IAM-токен>" \
--data '{"serviceAccountId": "<идентификатор_сервисного_аккаунта>"}' \
https://iam.api.cloud.yandex.net/iam/v1/keys
Где:
<IAM-токен>
— IAM-токен пользователя, у которого есть права на создание ключей для указанного сервисного аккаунта.<идентификатор_сервисного_аккаунта>
—ID
сервисного аккаунта, для которого создаются ключи.
В случае успеха в ответе сервера будет указан закрытый ключ (privateKey
) и идентификатор открытого ключа (id
). Сохраните эти данные. Получить значение ключа снова будет невозможно.
Пример ответа сервера:
{
"key": {
"createdAt": "2018-10-30T15:55:00+00:00",
"description": "",
"id": "lfkoe35hsk58********",
"keyAlgorithm": "RSA_2048",
"publicKey": "-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----\n",
"serviceAccountId": "ajepg0mjt06s********"
},
"privateKey": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n"
}