Создать API-ключ

Создать сервисный аккаунт можно в личном кабинете или по API с помощью curl-запроса.

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

  1. Создайте cервисный аккаунт.

  2. Запросите список сервисов, к которым можно привязать API-ключ:

    curl --location 'https://api.iam.sbercloud.ru/api/v1/products' \
    --header 'accept: application/json' \
    --header 'Authorization: Bearer $TOKEN' \
    --header 'Cookie: SERVERID=s1'
    

    Где $TOKEN — авторизационный токен.

    Пример ответа

    {
        "products": [
            {
                "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
                "name": "monaas",
                "description": "Monitoring As A Service",
                "endpoints": [
                    "cs-cgnat.cp.sbercloud.tech",
                    "api.iam.sbercloud.ru"
                ],
                "created_at": "2024-03-04T12:36:36.352798Z",
                "updated_at": "2024-03-04T12:36:36.352798Z"
            },
            {
                "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
                "name": "logaas",
                "description": "logaas",
                "endpoints": [
                    "api.iam.sbercloud.ru",
                    "cs-cgnat.cp.sbercloud.tech"
                ],
                "created_at": "2024-03-20T12:48:28.854067Z",
                "updated_at": "2024-03-20T12:48:28.854082Z"
            },
            {
                "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
                "name": "Schneider",
                "description": "non culpa do",
                "endpoints": [
                    "green Rubber",
                    "green Rubber"
                ],
                "created_at": "2024-03-04T12:36:35.732249Z",
                "updated_at": "2024-03-05T07:42:40.805920Z"
            },
            {
                "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
                "name": "Klocko",
                "description": "Refined TCP payment",
                "endpoints": [
                    "tost",
                    "green Rubber"
                ],
                "created_at": "2024-03-04T07:39:30.967606Z",
                "updated_at": "2024-03-05T07:47:19.641252Z"
            },
            {
                "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
                "name": "Wiza",
                "description": "Refined TCP payment",
                "endpoints": [
                    "green Rubber",
                    "green Rubber"
                ],
                "created_at": "2024-03-04T12:36:35.121510Z",
                "updated_at": "2024-03-04T12:36:35.121510Z"
            },
            {
                "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
                "name": "Stark",
                "description": "Refined TCP payment",
                "endpoints": [
                    "green Rubber",
                    "green Rubber"
                ],
                "created_at": "2024-03-04T12:36:36.352798Z",
                "updated_at": "2024-03-04T12:36:36.352798Z"
            }
        ]
    }
    
  3. Создайте API-ключ с помощью запроса:

    curl --location 'https://api.iam.sbercloud.ru/api/v1/service-accounts/credentials/api-keys' \
    --header 'accept: application/json' \
    --header 'Content-Type: application/json' \
    --header 'Authorization: Bearer $TOKEN' \
    --header 'Cookie: SERVERID=s1' \
    --data '{
      "name": "api-key-test",
      "description": "тестовый api-key",
      "serviceAccountId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "products": [
        "monaas"
      ],
      "restrictions": {
        "ipAddresses": {
          "ipAddresses": [
            "xxx.xxx.x.x"
          ]
        },
        "timeRange": {
          "timeSlots": [
            {
              "start": 18,
              "end": 19
            }
          ],
          "timezone": 3
        }
      },
      "enabled": true,
      "expiresAt": "2024-04-23T09:32:02.984Z"
    }'
    

    Где:

    • $TOKEN — авторизационный токен.

    • name — название API-ключа. Может содержать латинские буквы в нижнем и верхнем регистрах, цифры, дефисы, подчеркивания, точки и пробелы. Допустимая длина — от 1 до 256 символов.

    • description — описание ключа, которое поможет идентифицировать его среди других API-ключей.

    • serviceAccountId — идентификатор сервисного аккаунта.

    • products — сервис или несколько сервисов, для которых используется API-ключ. Необходимо добавить значение поля name из ответа на запрос списка сервисов.

    • restrictions — список ограничений.

      • ipAddresses — перечень IP-адресов и подсетей, из которых может использоваться API-ключ. Поддерживаются форматы протоколов IPv4 и IPv6.

      • timeRange — набор интервалов времени (timeSlots), в которые можно использовать API-ключ. Интервалы необходимо указывать в 24-часовом формате, используя целые числа от 0 до 24. Например, чтобы API-ключ работал с 00:00 до 05:00, укажите значение start равное 0 и end равное 5.

        Также числом от -12 до 12 указывается часовой пояс (timezone) интервалов.

    • enabled — флаг активности API-ключа. При значении true ключ активирован, при false — деактивирован.

    • expiresAt — дата истечения срока действия API-ключа. Вы можете установить значение от одного дня до одного года с текущей даты. Если параметр не задан, срок действия ключа устанавливается на максимальное значение — один год. Из соображений безопасности рекомендуется выставлять средние значения, например, 90 дней.

    В ответе возвращается созданный API-ключ.

    Пример ответа

    {
        "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "name": "api-key-test",
        "description": "тестовый api-key",
        "service_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "products": [
            "monaas"
        ],
        "secret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "restrictions": {
            "ip_addresses": {
                "ip_addresses": [
                    "xxx.xxx.x.x"
                ]
            },
            "time_range": {
                "time_slots": [
                    {
                        "start": 18,
                        "end": 19
                    }
                ],
                "timezone": 3
            }
        },
        "enabled": true,
        "created_at": "2024-03-25T06:13:57.605545853Z",
        "updated_at": "2024-03-25T06:13:57.605551730Z",
        "expires_at": "2024-04-23T09:32:02.984Z"
    }
    
  4. Чтобы использовать API-ключ, сохраните значение поля secret.

    secret — пароль, который возвращается только при создании API-ключа, в дальнейшем получить его будет нельзя. Из соображений безопасности рекомендуется хранить пароль в менеджере паролей.

Запустили Evolution free tier
для Dev & Test
Получить