Github Action을 사용하면 빌드, 테스트, 배포 및 다른 작업을 실행할 수 있습니다. 하지만 AWS 리소스를 사용하려면 AWS 자격 증명 정보가 필요합니다. 일반적으로 이는 AWS Access Key ID와 AWS Secret Access Key로 구성됩니다. 그러나 Github Action에서는 보안상의 이유로 Access Key를 사용하는 방식은 권장되지 않습니다.
대신 IAM Role로 인증하여 AWS 리소스에 대한 액세스를 안전하게 제어할 수 있습니다. IAM Role은 AWS 리소스에 대한 액세스 권한을 가지고 있는 역할(Role)입니다. IAM Role을 사용하면 Access Key ID와 Secret Access Key를 사용하여 AWS 리소스에 대한 액세스를 직접 제어할 필요가 없습니다.
따라서 Github Action에서 IAM Role로 인증하는 방법에 대해 알아보겠습니다.
필요한 정책 추가
Role 생성
생성된 Role의 신뢰관계 편집
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Federated": "arn:aws:iam::<account-id>:oidc-provider/token.actions.githubusercontent.com"
},
"Action": "sts:AssumeRoleWithWebIdentity",
"Condition": {
"StringEquals": {
"token.actions.githubusercontent.com:aud": "sts.amazonaws.com"
},
"StringLike": {
"token.actions.githubusercontent.com:sub": "repo:OrgName/RepoName"
}
}
}
]
}
Github-Action-flow.yaml
permission 추가
permissions:
id-token: write
contents: read
aws-action 추가
jobs:
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
role-to-assume: arn:aws:iam::<account-id>:role/test-cicd-github-action-role
aws-region: ap-northeast-2
- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v1
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Federated": "arn:aws:iam::<account-id>:oidc-provider/github.myEnterprise.com/_services/token"
},
"Action": "sts:AssumeRoleWithWebIdentity",
"Condition": {
"StringEquals": {
"github.myEnterprise.com/_services/token:aud": "sts.amazonaws.com"
},
"StringLike": {
"github.myEnterprise.com/_services/token:sub": "repo:OrgName/RepoName:*"
}
}
}
]
}