Сервис-аккаунты
Сервис-аккаунт или Service Account нужны для push образов в Container Registry, потому что пользователи могут делать только pull. Один тенант — сколько угодно сервис-аккаунтов.
У сервис-аккаунта есть:
- ключ — чтобы зайти в систему;
- роль — права, которые вы ему выдаёте.
Настроить
Шаг 1. Создайте сервис-аккаунт
Создать сервис-аккаунт может «Project lead» тенанта.
- Перейдите в Spirit.
- Проверьте, что на верхней панели у стрелочки ваш тенант.
- Нажмите Manage → Service accounts в левом меню.
- Нажмите Create.
- Заполните Name и напишите в Description, для чего вы хотите использовать сервис-аккаунт.
- Нажмите Create.
Шаг 2. Добавьте роль
Сервис-аккаунт нельзя добавить в другой тенант и назначить ему роль. Назначьте на сервисную учётку роли также, как на пользователя.
Добавить роль может «Project lead» тенанта.
- Нажмите Добавить роль.
- Выберите Роль.
- Нажмите Сохранить.
Шаг 3. Создайте ключ
Ключ — файл в формате .JSON для авторизации. У сервис-аккаунта их
может быть несколько — отдельный для разных автоматизаций.
Храните ключ в надёжном месте, например, в групповых переменных CI с типом файл. Если он потеряется или утечёт, сгенерируйте новый. Если удалить ключ, автоматизация, которая использует его, потеряет доступ к системе.
Чтобы создать ключ:
- Проверьте, что у вас роль Project lead в тенанте.
- Перейдите на вкладку Ключи.
- Нажмите Добавить ключ.
- Напишите Описание — для чего создаёте ключ.
- Выберите Дату истечения срока действия.
- Нажмите Сохранить.
Файл с ключом загрузится на компьютер, вы можете открыть его в текстовом редакторе или среде разработки.
Пример ключа:
{
"kind": "ServiceAccountKeySecret",
"attributes": {
"clientID": "a33e0cbd-2e63-44f0-8e39-322d3f0aa51d",
"clientSecret": "m90agRkz4TfrW6gHw2~f~aFceI",
"privateKey": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEAt/sBAFlpVLQetG6N9m3FEFP5OwjJv3ZPPXB+dxmnDFoa8uXF\nTcLgz+VahS7ymb6rf/iCR/bbL/N1yAMW3KdiSc916rG3h4+VipMvr6ZWEMvAAgAt\n95iJgvEZbfKUfC0XlJwg/p37CUkoAoCDC7jlHgsEZcwAwtu18AcXVpJRUnwkA/wh\nZpG2yyR4EvcdXur1nvyDTboo0Q3wcaEWrliuSCHr64RM5+WYBLlQkfph9sznBJ9p\n5Jyg/syD7ttKiCL4mLQ9+RDzoBD1eyVmXKdx8lvhvLjKgcCfbcOuPgZmp1w6KTvq\n8oCF8vHrg+DgAX/uLpJUOyPUab6DionFxyzwsQIDAQABAoIBAQCAvHBM8EOV85tw\nodNQVisIa9n/hvy0rnJwCWFUsWyEZiBpSoIvEWgB0PjwLJOxJQwYNanj9UYWXYNS\n+2Zp6+4Iu9RE7yn+/2eiWa+KdxfOFOQ8AigoEmJWb6JdntprsZnIcR9dSuo36yrF\n5WrNLwmTZh4jpQX7U4YReMTJ3QRudCKbFyKU1NV8/t6x1twxeGB75hd8NQR8z+km\ndUTbh7k73j1ig4UojZKm92MJZhgrcO/sAgsjWia6wPcxFsKkeiG3x+oHs3kkGdLw\nBdUUKMkjkqsmbJAzoVTMGXW9GWMWxf6AyRzsmMKvB6CFZfAS2ZjM8VmcNQreZcJE\nRAAZW0LJAoGBAMkDHcta2l3gVxYMw/2EXEakvm6EqO70Sl4ataFuMTX06oXSE5a6\nOKGLjDKCIbCqiFUjvULMW0RmCELBX4A8O7LHP82dUXEZ0/1KaZbl1Gc8pX+03LLX\nqmFycgWorx8gek4hQXmY6GtnA0b3cuC7ltxmhez+CZByXE70ib0v4UsnAoGBAOpP\nKIGiO8W+EAFuxcwrxIVabMa4ASfmI+cRYeYq/lK2ea2HOD3MTW3eJsDgEMa52Fz5\nT/m2eiKALubrmYj2uNkVbcZGQiglmb53+9XAAtTe48DH9vDGpjjnpR33zx9VFLzM\nnd1zPd98RvtiKCQuCq2BpyVNHt7fDUJXSQ+mmyxnAoGAIoYef+bCyozVaDwZDVnG\nX3u8GU8/lIrwmukLeQZr/VBrV0CVjLW/ND+7fJFNKAKiF71jrC1dH4pGsPB1bpjp\nx/LgynfSnRJKjp5RNFGVAYYxBpYRscXIxaPaYY5vRXFWkES18iSJBqlSrsWhPWf6\nqTASoHmhOuXpZMYrQgsPLtECgYB5wuMQ4sbfDtLwe6ksXb5FcmU+q1ZmbpFPvde7\nLbJ2Nz9qLu/KJYZDRwOqjYYKT3+haSnnYa18ilJVTC/AXj5XCWy/cblldYy8z0s+\nnAacqqt+fivUmda9kZtbxHCNHsClEEwlTYLkxYd5kVu82XRRECRVHQui1BTm2ccs\n6+6NlwKBgFb8fX5EUBkdhsbhC9iiZnxjNAZCJoASxEFdOC890PTliv6caz78suO8\nJs6ftmUThZwyV35/cHXd6EHaFf8hus3l0dxZwN8iQfS/3HkFV8fEADd/zHaR33N/\nWdRH4v8zbuDZB7CpPq5WiV5vhJ+67eWEq634+YVFL04GDqOQv1Jg\n-----END RSA PRIVATE KEY-----\n",
"privateKeyID": "86fc052d-39f6-4142-a445-66c813bb1997",
"serviceAccountID": "553a151e-b956-4463-bf44-25d5afc35184",
"serviceAccountName": "test-2912-sa-test",
"tenantKey": "test-2912",
"tokenURI": "https://polygon.t-technologies.ru/api/v1/oauth2/token"
}
}
Шаг 4. Пройдите аутентификацию
Время жизни токена — 1 час. Если он истёк, запросите новый.
Чтобы получить токен доступа:
-
Установите утилиту Spirit CLI, если её у вас не было.
-
Выполните команду, где файл
.JSON— ключ, который вы сгенерировали в Шаге 3:dp auth service-acc --key-file sa-test-0201-test-6f84e5d4-3247-4779-a1fb-e7f9994026d3.json -
Получите токен доступа с помощью команды:
dp auth print-token
Шаг 5. Обратитесь к API с токеном
Чтобы обратиться к API Spirit и подключенным к нему системам, передайте
токен в заголовке Authorization: Bearer <token>.
Например:
> curl -X GET https://polygon.t-technologies.ru/api/v1/projects --header "Authorization: Bearer 1kwCcW6aIybZmsy8ccd3jkfNFaBGX5BahIxz-kzr_fc.rGi5j8KDnY9U6ZddFsvrnPwoB_GCWIKKQck7y4rhkhw"
>[{"id":"51cc1bbc-4b2f-4f97-b530-42aa4b9c430d","name":"test-2912","key":"test-2912","description":"test-2912","private":false}]
Исправить ошибки
401 Unauthorized
Обращение без токена, с истекшим, отозванным или некорректным токеном приведет к получению ошибки
> curl -X GET https://polygon.t-technologies.ru/api/v1/projects
>\{"error":{"code":401,"status":"Unauthorized","request":"72cf841bd9c894ec9eb50806fa8a5438","message":"Access credentials are invalid"}}
403 Forbidden
Если вы обратились с токеном, для которого недостаточно полномочий для обращения к ресурсу:
> curl -X GET https://polygon.t-technologies.ru/api/v1/admins --header "Authorization: Bearer 1kwCcW6aIybZmsy8ccd3jkfNFaBGX5BahIxz-kzr_fc.rGi5j8KDnY9U6ZddFsvrnPwoB_GCWIKKQck7y4rhkhw"
> {"error":{"code":403,"status":"Forbidden","request":"a29a2cabe38f69152ee0c914497c7bc6","reason":"No allow policies applied","message":"Access credentials are not sufficient to access this resource"}}