Создать сервисный аккаунт с ключами
Эту статью по-хорошему надо было бы написать в самом начале. Это резко уменьшило бы количество написанных мною строчек. Но как есть, лучше поздно чем никогда. В этой статье опишем как создать сервисный аккаунт (далее SA), назначить ему необходимые права доступа на фолдер, создать для него API ключ и IAM ключа чтобы иметь возможность от его имени что-то запускать. А также создадим статические ключи доступа, чтобы иметь возможность взаимодействовать с S3 от имени SA.
SA - это аккаунт, от имени которого программы могут управлять ресурсами в Yandex Cloud.
yc iam service-account create \ --name cameda-service \ --description "Main service account" \ --async
Если необходимо что-то изменить в SA, то это можно сделать через команду update.
yc iam service-account update cameda-service \ --description "Main service account" \ --async
Добавим созданному аккаунту необходимых прав доступа.
export FOLDER=$(yc config get folder-id) export SA=$(yc iam service-account get cameda-service --format json | jq -r '.id') yc resource folder add-access-binding $FOLDER --role editor --subject serviceAccount:$SA
В этой статье я не запариваюсь кастомными правами для SA. Поэтому довольно топорно назначу права editor. Но это решение не очень секьюрное и в проде не рекомендуется. Лучше выдавать сервисному аккаунту минимальный набор прав для решения конкретных задач. Например, здесь https://teletype.in/@cameda/3BqWWeOkRZ0 при создании кластера k8s я создал SA с минимально необходимым набором прав.
Проверим, что права действительно установились.
yc resource folder list-access-bindings $FOLDER | grep $SA
В появившейся таблице будут указаны все роли в фолдере нашего SA. Это роль editor.
yc iam api-key create --service-account-id $SA > api-key.yaml
yc iam key create --service-account-id $SA --output key.json
Создадим статический ключ доступа для возможности работы с Object Storage:
yc iam access-key create --service-account-id $SA > stat-key-to-s3.txt
yc iam access-key create --service-account-id $SA --format=json > stat-key-to-s3.json
Всё! Теперь наш SA готов к работе! Теперь главное эти ключи не потерять.
Полезные ссылки.
Что такое SA? https://cloud.yandex.ru/docs/iam/concepts/users/service-accounts
Как создать SA? https://cloud.yandex.ru/docs/iam/operations/sa/create
Как назначить права доступа для SA? https://cloud.yandex.ru/docs/iam/operations/sa/set-access-bindings
Что такое API ключ? https://cloud.yandex.ru/docs/iam/concepts/authorization/api-key
Что такое IAM токен?
https://cloud.yandex.ru/docs/iam/concepts/authorization/iam-token
Как просмотреть назначенные роли? https://cloud.yandex.ru/docs/iam/operations/roles/get-assigned-roles
Как создать API ключ? https://cloud.yandex.ru/docs/iam/operations/api-key/create
Как создать IAM токен?
https://cloud.yandex.ru/docs/iam/operations/iam-token/create-for-sa
Какой ключ используется для аутентификации в Object Storage?
https://cloud.yandex.ru/docs/iam/concepts/authorization/access-key
Как создать статический ключ доступа?
https://cloud.yandex.ru/docs/iam/operations/sa/create-access-key
Рекомендации по обеспечению безопасности в облаке:
https://cloud.yandex.ru/docs/iam/best-practices/using-iam-securely