О вреде юзеров.
В грамотно спроектированном окружении нет (не должно быть) #IAM юзеров. Почему? Потому что у юзера есть #credentials и они должны быть где-то явно указаны (в отличие от роли, прикреплённой к инстансу).
Если у вас один аккаунт на всех и всё, значит все пользователи заходят через юзеров, что проблема в степени количества этих юзеров. Обязательно включайте MFA для всех юзеров. А лучше переходите на светлую сторону #multi_account_strategy + #SSO.
В легаси-проектах, где ПО не умеет роль (требует наличия AccessKeyId и SecretAccessKey) - приходится заводить юзера. Включайте ему минимальные права - ровно на то, что он должен делать.
Для некоторых ситуаций, например, доступ в #CodeCommit по SSH или в #ES вне #VPC - тоже требуется наличие юзера. Всё это издержки Амазона (фу, как не стыдно), не придумавшего пока, как реализовать это без юзеров.
Во всех остальных случаях - никаких юзеров. Помните, хороший юзер - это роль.
#recomendation
В грамотно спроектированном окружении нет (не должно быть) #IAM юзеров. Почему? Потому что у юзера есть #credentials и они должны быть где-то явно указаны (в отличие от роли, прикреплённой к инстансу).
Если у вас один аккаунт на всех и всё, значит все пользователи заходят через юзеров, что проблема в степени количества этих юзеров. Обязательно включайте MFA для всех юзеров. А лучше переходите на светлую сторону #multi_account_strategy + #SSO.
В легаси-проектах, где ПО не умеет роль (требует наличия AccessKeyId и SecretAccessKey) - приходится заводить юзера. Включайте ему минимальные права - ровно на то, что он должен делать.
Для некоторых ситуаций, например, доступ в #CodeCommit по SSH или в #ES вне #VPC - тоже требуется наличие юзера. Всё это издержки Амазона (фу, как не стыдно), не придумавшего пока, как реализовать это без юзеров.
Во всех остальных случаях - никаких юзеров. Помните, хороший юзер - это роль.
#recomendation
Чтобы запустить #aws_cli команду для другого аккаунта, нужно сначала добавить в ~/.aws/config профиль типа:
Параметры:
devops-codecommit - просто имя профиля
role_arn - роль в аккаунте, куда нужно переключиться
credential_source = Ec2InstanceMetadata означает, что #IAM из роли инстанса
У codecommit-role должны быть права на переключение "sts:AssumeRole" и остальное нужное (в данном примере - доступ в #CodeCommit).
Теперь для просмотра репозиториев в другом аккаунте отработает следующая команда:
Т.е. благодаря флажку --profile происходит переключение в роль нужного аккаунта.
https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html
[profile devops-codecommit]
role_arn = arn:aws:iam::123456789012:role/codecommit-role
credential_source = Ec2InstanceMetadata
Параметры:
devops-codecommit - просто имя профиля
role_arn - роль в аккаунте, куда нужно переключиться
credential_source = Ec2InstanceMetadata означает, что #IAM из роли инстанса
У codecommit-role должны быть права на переключение "sts:AssumeRole" и остальное нужное (в данном примере - доступ в #CodeCommit).
Теперь для просмотра репозиториев в другом аккаунте отработает следующая команда:
aws codecommit list-repositories --profile devops-codecommitТ.е. благодаря флажку --profile происходит переключение в роль нужного аккаунта.
https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html
Amazon
Using an IAM role in the AWS CLI - AWS Command Line Interface
Configure the AWS CLI to use a role defined in AWS Identity and Access Management.
Доступ в #CodeCommit (git репозиторий) можно получить не только через привычные логин-пароль (https) и ключ (ssh), но и с помощью IAM роли. Это удобно и безопасно, т.к. нет #credentials (лишь прикреплённая к инстансу роль). В качестве адреса репозитория при этом используется https-вариант.
Когда CodeCommit-репозиторий в том же аккаунте, то всё работает очевидно. Однако что делать, если согласно #multi_account_strategy какое-то test-окружение, поднятое в своём test-аккаунте, должно загрузить репозиторий из репозитория, расположенного в (другом) devops-аккаунте?
Тут потребуется подправить настройки credential.helper - чтобы #git сам переключался в нужный аккаунт.
То есть для этого используем описанный в предыдущем посте метод.
Вот полный пример кода для #user_data с загрузкой git из другого аккаунта:
https://docs.aws.amazon.com/codecommit/latest/userguide/auth-and-access-control.html
Когда CodeCommit-репозиторий в том же аккаунте, то всё работает очевидно. Однако что делать, если согласно #multi_account_strategy какое-то test-окружение, поднятое в своём test-аккаунте, должно загрузить репозиторий из репозитория, расположенного в (другом) devops-аккаунте?
Тут потребуется подправить настройки credential.helper - чтобы #git сам переключался в нужный аккаунт.
git config --global credential.helper '!aws codecommit --profile devops-codecommit credential-helper $@'То есть для этого используем описанный в предыдущем посте метод.
Вот полный пример кода для #user_data с загрузкой git из другого аккаунта:
## Setup Git for CodeCommit
mkdir /root/.aws
AWS_CONFIG=/root/.aws/config
echo "[profile devops-codecommit]" > $AWS_CONFIG
echo "credential_source = Ec2InstanceMetadata" >> $AWS_CONFIG
echo "role_arn = ${CodeCommitRoleArn}" >> $AWS_CONFIG
export HOME=/root
git config --global credential.helper '!aws codecommit --profile devops-codecommit credential-helper $@'
git config --global credential.UseHttpPath true
## get repos from CodeCommit
HTTPS_GIT=https://git-codecommit.us-east-1.amazonaws.com/v1/repos
git clone -b ${ProjectBranch} --quiet $HTTPS_GIT/${ProjectName} $DOCKERPROJECT_DIR &> /dev/null
https://docs.aws.amazon.com/codecommit/latest/userguide/auth-and-access-control.html
Amazon
Authentication and access control for AWS CodeCommit - AWS CodeCommit
Control user access using IAM policies to specify which CodeCommit actions a user in your Amazon Web Services account can perform.
Notifications в Code* сервисах
В сервисы CodeCommit, CodeBuild, CodeDeploy и CodePipeline были добавлены Notifications, которые шлются через SNS:
https://aws.amazon.com/about-aws/whats-new/2019/11/introducing-notifications-for-aws-codecommit-aws-codebuild-aws-codedeploy-and-asw-codepipeline/
Notifications можно вешать на нужные события — сбилдилось, нет, в процессе и т.п.:
https://docs.aws.amazon.com/codestar-notifications/latest/userguide/concepts.html#events-ref-repositories
В общем, реально полезное дополнение для организации CI/CD процесса.
#CodeCommit #CodeBuild #CodeDeploy #CodePipeline
В сервисы CodeCommit, CodeBuild, CodeDeploy и CodePipeline были добавлены Notifications, которые шлются через SNS:
https://aws.amazon.com/about-aws/whats-new/2019/11/introducing-notifications-for-aws-codecommit-aws-codebuild-aws-codedeploy-and-asw-codepipeline/
Notifications можно вешать на нужные события — сбилдилось, нет, в процессе и т.п.:
https://docs.aws.amazon.com/codestar-notifications/latest/userguide/concepts.html#events-ref-repositories
В общем, реально полезное дополнение для организации CI/CD процесса.
#CodeCommit #CodeBuild #CodeDeploy #CodePipeline
Кто активно использует CodeCommit, у него есть свой credentials helper — git-remote-codecommit:
https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-git-remote-codecommit.html
Ему можно прописать нужного IAM юзера и работать с GIT через него, а не используя логин-пароль (HTTPS) или ключ (SSH).
#CodeCommit
https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-git-remote-codecommit.html
Ему можно прописать нужного IAM юзера и работать с GIT через него, а не используя логин-пароль (HTTPS) или ключ (SSH).
#CodeCommit
Amazon
Setup steps for HTTPS connections to AWS CodeCommit with git-remote-codecommit - AWS CodeCommit
Provides steps for setting up to connect to CodeCommit repositories over HTTPS with git-remote-codecommit, a utility that modifies Git. This is the recommended approach for federated or temporary access connections to CodeCommit repositories. You can also…
AWS CodeCommit — всё.
Beginning on 06 June 2024, AWS CodeCommit ceased onboarding new customers. Going forward, only customers who have an existing repository in AWS CodeCommit will be able to create additional repositories.
This change should not impact your current workloads utilizing AWS CodeCommit. If you this is impacting your current workloads, please let us know. If you would like to use AWS CodeCommit in a new AWS account that is part of your AWS Organization, please let us know so that we can evaluate the request for allowlisting the new account.
https://repost.aws/questions/QUshILm0xbTjWJZSD8afYVgA/codecommit-cannot-create-a-repository
#CodeCommit
Beginning on 06 June 2024, AWS CodeCommit ceased onboarding new customers. Going forward, only customers who have an existing repository in AWS CodeCommit will be able to create additional repositories.
This change should not impact your current workloads utilizing AWS CodeCommit. If you this is impacting your current workloads, please let us know. If you would like to use AWS CodeCommit in a new AWS account that is part of your AWS Organization, please let us know so that we can evaluate the request for allowlisting the new account.
https://repost.aws/questions/QUshILm0xbTjWJZSD8afYVgA/codecommit-cannot-create-a-repository
#CodeCommit
Amazon Web Services, Inc.
Codecommit - cannot create a repository
"CreateRepository request is not allowed because there is no existing repository in this AWS account or AWS Organization"
Tried creating a repository on my root account and a full access admin acc...
Tried creating a repository on my root account and a full access admin acc...
👍13😢10🤔2👏1
AWS replacement for CodeCommit — git-remote-s3
https://github.com/awslabs/git-remote-s3
• git remote helper to use S3 as a serverless Git server
• git-lfs custom transfer to push LFS files
#CodeCommit #git #S3
https://github.com/awslabs/git-remote-s3
• git remote helper to use S3 as a serverless Git server
• git-lfs custom transfer to push LFS files
#CodeCommit #git #S3
GitHub
GitHub - awslabs/git-remote-s3
Contribute to awslabs/git-remote-s3 development by creating an account on GitHub.
🔥8🤔6👍3