C.W.K.
Stream
Lesson 08 of 12 · published

OIDC — Keyless cloud 인증

~14 min · oidc, aws, gcp, azure

Level 0Apprentice
0 XP0/101 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

장기 cloud 키를 CI 에 저장 그만

CI 에서 AWS deploy 의 전통 방식: AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY 를 secret 으로 저장. 만료 없음, 장기, 하나 누출이 닿을 수 있는 모든 걸 침해. 더 이상 하지 마.

OpenID Connect (OIDC) 가 GitHub Actions 가 cloud provider 의 IAM 에서 직접 짧은 수명 scope 된 token 을 요청하게 해. Flow:

  1. Workflow 가 permissions: id-token: write 선언.
  2. Action 이 GitHub 에서 OIDC ID token 요청. Token: 'repo X, branch Y, Z 가 실행한 workflow'.
  3. Cloud provider (AWS / GCP / Azure 등) 가 GitHub 의 public key 로 token 서명 검증.
  4. Cloud provider 가 trust policy 확인: 'repo X 의 workflow 가 role R assume 하는 거 신뢰?'
  5. Yes 면 짧은 수명 (1 시간 정도) credential 반환.
  6. Action 이 그 cred 사용. 자동 만료.

주요 cloud provider 다 지원

  • AWS — token.actions.githubusercontent.com 용 IAM Identity Provider, 그 다음 repo:my-org/my-repo:ref:refs/heads/main 키로 trust policy 가진 role.
  • GCP — Workload Identity Federation, 비슷한 개념.
  • Azure — service principal 의 Federated credential.
  • Vault, AWS Cognito 등 — 같은 원리.

Code

OIDC 로 AWS deploy — 정적 key 없음·yaml
jobs:
  deploy:
    runs-on: ubuntu-latest
    permissions:
      id-token: write       # request OIDC token
      contents: read
    steps:
      - uses: actions/checkout@v4
      - uses: aws-actions/configure-aws-credentials@v4
        with:
          role-to-assume: arn:aws:iam::123456789012:role/gha-deploy
          aws-region: us-east-1
      - run: aws s3 sync ./dist s3://my-bucket/

External links

Exercise

정적 AWS key 쓰는 CI workflow 있으면 OIDC 로 마이그레이션. Cloud 측 설정은 일회성 IAM Identity Provider + trust policy 가진 role. 마이그레이션 후 정적 AWS_ACCESS_KEY_ID secret 완전 삭제.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.