GithubAction으로 AWS에 배포할 때 GithubAction 인스턴스 상에서 AWS 설정을 해야한다. 이때, 필요한 권한을 받은 유저의 access key와 secret access key를 필요로하는데, 최소한의 권한 설정을 했어도Github 같은 서드파티 서비스에 이런 보안정보를 보관하는 것은 미심쩍인 일일 수 밖에 없다.
AWS의 공식 GithubAction 패키지인 @aws-actions/configure-aws-credentials에서는 OpenID Connect이라는 시스템을 이용해 보다 안전하게 AWS 계정에 로그인하도록 지원하고 있다.
jobs:
deploy-ecs:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: arn:aws:iam::123456789012:role/my-role
aws-region: ap-northeast-2
이렇게, IAM Role의 arn주소만을 가지고서 aws 로그인이 가능해지기 때문에 불필요하게 보안 정보를 서드파티에 노출할 필요가 없어진다.
@aws-actions/configure-aws-credentials
configure-aws-credentials 패키지를 사용하기 위해서는 OpenID Connect를 먼저 설정해야하는데, 설정하는 방법은 다음의 순서를 따르면 된다.
더 자세한 것은 Github Docs를 참고 바란다.


provider URL과 Audience는 가이드 문서에서 제공해주는데 다음의 값을 사용하면 된다.
provider URL = https://token.actions.githubusercontent.com
Audience = sts.amazonaws.com

Assign Role을 누르고, 새 역할 추가를 선택하게 되면 다음과 같은 화면이 나온다.

해당 역할을 사용하려는 깃헙 조직과 레포, 그리고 브랜치까지도 정해둘 수가 있는데, 세밀하게 정할수록 보안이 올라가기 때문에 사용하는 상황에 맞게 적절히 설정한다.

앞 단계에서 만든 역할의 arn을 확인하고, GithubAction 스크립트에 추가하면 끝.