Создание API-ключа

Это инструкция по созданию API-ключа для сервисного аккаунта. API-ключ — секретный ключ, используемый для упрощенной авторизации в API Яндекс.Облака.

Если у вас еще нет сервисного аккаунта, создайте его и назначьте ему роли.

Чтобы создать API-ключ:

  1. Перейдите в каталог, которому принадлежит сервисный аккаунт.

  2. Выберите вкладку Сервисные аккаунты.

  3. Выберите сервисный аккаунт и нажмите на строку с его именем.

  4. Нажмите кнопку Создать новый ключ на верхней панели.

  5. Выберите пункт Создать API-ключ.

  6. Задайте описание ключа, чтобы потом было проще найти его в консоли управления.

  7. Сохраните идентификатор и секретный ключ.

    После закрытия диалога значение ключа будет недоступно.

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

  1. Посмотрите описание команды создания API-ключа:

    $ yc iam api-key create --help
    
  2. Выберите сервисный аккаунт, например my-robot:

    $ yc iam service-account list
    +----------------------+------------------+-------------------------------+
    |          ID          |       NAME       |          DESCRIPTION          |
    +----------------------+------------------+-------------------------------+
    | aje6o61dvog2h6g9a33s | my-robot         |                               |
    | aje9sda1ufvqcmfksd3f | blabla           | bla bla bla is my description |
    +----------------------+------------------+-------------------------------+
    
  3. Создайте API-ключ для сервисного аккаунта my-robot и запишите ответ в файл:

    $ yc iam api-key create --service-account-name my-robot > api-key.yaml
    

    В ответе в свойстве secret будет содержаться API-ключ:

    api_key:
      id: ajeke74kbp5bfq7m6ka2
      service_account_id: ajepg0mjt06siuj65usm
      created_at: "2019-04-09T08:41:27Z"
    secret: AQVN1HHJReSrfo9jU3aopsXrJyfq_UHsssT5ICtm
    

    О том, как передать ключ в запросе, читайте в документации сервисов, которые поддерживают такой способ авторизации.

  1. Узнайте идентификатор сервисного аккаунта.

  2. Создайте API-ключ с помощью метода create для ресурса ApiKey:

    $ export SERVICEACCOUNT_ID=aje6o61dvog2h6g9a33s
    $ export IAM_TOKEN=CggaATEVAgA...
    $ curl -X POST \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer $IAM_TOKEN" \
        -d "{ \"serviceAccountId\": \"$SERVICEACCOUNT_ID\" }" \
        https://iam.api.cloud.yandex.net/iam/v1/apiKeys
    

Примеры

Добавить описание при создании

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

$ yc iam api-key create --service-account-name my-robot \
    --description "this API-key is for my-robot"
$ export SERVICEACCOUNT_ID=aje6o61dvog2h6g9a33s
$ export IAM_TOKEN=CggaATEVAgA...
$ curl -X POST \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $IAM_TOKEN" \
    -d "{
        \"serviceAccountId\": \"$SERVICEACCOUNT_ID\",
        \"description\": \"this API-key is for my-robot\"
    }" \
    https://iam.api.cloud.yandex.net/iam/v1/apiKeys

Что дальше