피드로 돌아가기
Dev.toBackend
원문 읽기
No Certs, No Secrets: Microsoft Graph on Azure using Entra Workload Identity Federation and Amazon Cognito (OIDC)
Microsoft Graph 인증 시 클라이언트 시크릿·인증서 대신 Amazon Cognito OIDC를 통한 Entra Workload Identity Federation 도입으로 수동 로테이션 제거
AI 요약
Context
Microsoft Graph를 인증할 때 클라이언트 시크릿이나 인증서를 사용하면 엔터프라이즈 보안 정책 상 수동으로 정기적으로 로테이션해야 한다. 이 문제를 해결하기 위해 외부 OIDC 제공자를 신뢰하도록 설정된 Workload Identity Federation 방식이 필요했다.
Technical Solution
- Amazon Cognito에서 Identity Pool 생성: 인증되지 않은 접근 차단(allowUnauthenticatedIdentities: false), 개발자 제공자 이름 설정으로 OIDC JWT 토큰 발급 준비
- IAM 정책으로 Identity Pool 접근 제어: cognito-identity:GetOpenIdTokenForDeveloperIdentity, cognito-identity:GetId 액션 허용
- AWS Lambda를 통한 Cognito JWT 요청: get_open_id_token_for_developer_identity API 호출로 토큰 발급, 토큰 유효시간 설정(60초 또는 120초)
- Azure AD 앱 등록 후 연합 자격증명(Federated Credential) 설정: Issuer를 https://cognito-identity.amazonaws.com으로 지정, Subject와 Audience 값(Cognito Identity Pool ID)을 Azure 앱에 명시적으로 구성
- Cognito JWT를 Azure 토큰으로 교환: Entra의 /token 엔드포인트(login.microsoftonline.com)에 client_assertion_type으로 JWT Bearer 토큰 전달하는 client credentials flow 사용
Key Takeaway
클라이언트 시크릿 없이 OIDC 제공자 간 신뢰 관계를 설정하면 수동 로테이션 없이 임시 토큰 기반 인증이 가능해진다. 엔터프라이즈 환경에서 여러 클라우드 제공자를 조합할 때 Workload Identity Federation이 보안과 운영 부담의 균형을 맞추는 핵심 패턴이다.
실천 포인트
Azure를 사용하면서 AWS 기반 인프라를 병행하는 팀은 Amazon Cognito Identity Pool의 OIDC JWT를 Entra Workload Identity Federation과 직접 연계할 수 있으므로, 별도의 시크릿 관리 시스템 도입 없이 토큰 교환만으로 권한 위임을 구현할 수 있다.