왜 이게 필요한가요?
"우리 서버 지금 괜찮아요?" — 고객사 담당자나 경영진이 모니터링 현황을 확인하고 싶을 때마다 스크린샷을 찍어 이메일로 보내고 계신가요? 그 수고를 한 번만 설정하면 없앨 수 있습니다.
CloudWatch 대시보드는 기본적으로 AWS 계정 소유자만 볼 수 있습니다. 하지만 AWS SSO(Single Sign-On)와 Amazon Cognito, SAML 연동을 조합하면 AWS 계정이 전혀 없는 외부 사용자에게도 읽기 전용 대시보드 링크를 제공할 수 있습니다.
전체 인증 흐름
그림 1. 사용자 → AWS SSO → Cognito → CloudWatch 읽기 전용 접근 흐름
- 사용자가 SSO 포털에서 공유된 대시보드 앱을 클릭합니다.
- AWS SSO가 SAML로 Identity Provider(Cognito User Pool)에 인증을 위임합니다.
- Cognito가 읽기 전용 IAM 역할을 부여한 토큰을 반환합니다.
- 브라우저가 CloudWatch 대시보드로 리디렉션되고, 지표를 읽기 전용으로 조회합니다.
CloudWatch 대시보드 만들고 공유 시작하기
먼저 공유할 대시보드가 있어야겠죠. CloudWatch 콘솔에서 원하는 위젯(CPU, 메모리, 네트워크 등)을 추가한 대시보드를 만들어 두세요. 그 다음 우측 상단 Actions → Share dashboard를 클릭합니다.
그림 2. Actions 메뉴 → Share dashboard
CloudWatch Settings에서 SSO 활성화
대시보드 공유를 처음 설정할 때는 CloudWatch Settings 페이지에서 Dashboard sharing 섹션을 먼저 활성화해야 합니다. 기본값은 비활성화(Email and password 또는 Public)이며, SSO를 선택하면 Cognito User Pool과 연결할 수 있습니다.
그림 3. CloudWatch Settings → Dashboard sharing
Cognito User Pool 생성
Amazon Cognito 콘솔에서 새 User Pool을 만듭니다.
이름은 CloudWatchDashboardSharing처럼 역할이 분명히 드러나는 이름을 권장합니다.
생성 후 Pool ID를 메모해 두세요 — 나중에 CloudWatch에 등록할 때 필요합니다.
그림 4. Cognito User Pool 생성 후 Pool ID 확인
Cognito에 SAML Identity Provider 추가
User Pool의 Federation → Identity providers로 이동해 SAML을 선택합니다.
AWS SSO가 Identity Provider 역할을 하므로, SSO 콘솔에서 제공하는 SAML 메타데이터 URL을 입력합니다.
Provider 이름은 SharedCloudWatchDashboard로 지정합니다.
그림 5. Cognito User Pool → Federation → SAML 선택
그림 6. SAML 메타데이터 URL 및 Provider 이름 입력
SAML 공급자를 추가한 뒤 Attribute mapping 탭에서
SAML의 email 속성을 Cognito User Pool의 Email 속성에 매핑합니다.
그림 7. SAML 속성 매핑 (email → Email)
Cognito App Client 및 도메인 설정
User Pool의 App clients에서 새 앱 클라이언트를 추가합니다. 토큰 만료 시간은 운영 환경에 맞게 조정하고, Auth Flows에서 Generate client secret을 활성화합니다.
그림 8. App Client 설정 (토큰 만료, client secret 생성)
OAuth 2.0 설정에서는 Authorization code grant 플로우를 선택하고,
스코프는 email, openid, aws.cognito.signin.user.admin을 활성화합니다.
그림 9. OAuth 2.0 - Authorization code grant + 필요 스코프 선택
마지막으로 App integration → Domain name에서 Cognito 호스팅 UI 도메인을 설정합니다.
cw-db-[고유값].auth.us-east-1.amazoncognito.com 형식으로 자동 생성됩니다.
그림 10. Cognito 도메인 이름 확인
AWS SSO에서 커스텀 SAML 애플리케이션 추가
AWS SSO 콘솔의 Applications로 이동해 Add a new application을 클릭합니다. 사전 정의된 앱 목록이 나오지만, 우리는 Add a custom SAML 2.0 application을 선택합니다.
그림 11. AWS SSO Applications 목록
그림 12. 커스텀 SAML 2.0 애플리케이션 추가
애플리케이션 이름을 입력한 뒤 Application metadata 섹션에서 Cognito의 ACS URL과 SAML Audience(Application SAML audience)를 입력합니다. 이 값은 Cognito User Pool → App integration에서 확인할 수 있습니다.
그림 13. AWS SSO Application ACS URL 및 SAML Audience 입력
저장 후 Attribute mappings 탭에서
Subject → emailAddress 형식으로 매핑을 추가합니다.
SSO에서 넘기는 이메일 정보가 Cognito로 정확히 전달되어야 로그인이 성립됩니다.
그림 14. AWS SSO 속성 매핑 (Subject → emailAddress)
Cognito에 SSO SAML 메타데이터 URL 등록 (교차 연결)
이제 역방향 연결을 완성할 차례입니다. 방금 만든 AWS SSO 애플리케이션의 SAML metadata file 링크를 복사해, 앞서 만든 Cognito SAML Identity Provider의 메타데이터 URL 칸에 붙여넣기 합니다.
그림 15. AWS SSO 앱 → SAML metadata URL 복사
CloudWatch Dashboard Sharing에 SSO Provider 등록
CloudWatch 콘솔 → Settings → Dashboard sharing → SSO provider로 돌아옵니다. Manage SSO providers를 클릭하면 드롭다운에 방금 만든 Cognito User Pool이 나타납니다. 선택 후 저장하면 설정이 완료됩니다.
그림 16. CloudWatch Dashboard Sharing에 SSO Provider 등록
그림 17. Cognito User Pool을 SSO Provider로 선택
사용자 관점: SSO 포털에서 대시보드 접근
모든 설정이 완료되면 SSO 포털에 로그인한 사용자는 앱 목록에서 "My First Shared CloudWatch Dashboard" 아이콘을 볼 수 있습니다. 클릭 한 번으로 CloudWatch 대시보드가 읽기 전용으로 열립니다 — AWS 콘솔 접근 없이요!
그림 18. SSO 포털에 등록된 CloudWatch 대시보드 앱
전체 설정 요약
- CloudWatch에서 공유할 대시보드 생성 → Actions → Share dashboard
- CloudWatch Settings → Dashboard sharing → SSO 활성화
- Cognito User Pool 생성 (
CloudWatchDashboardSharing) - Cognito에 SAML Identity Provider 추가 (AWS SSO 메타데이터 URL 입력)
- Cognito App Client 생성 + OAuth 2.0 (Authorization code grant) + 도메인 설정
- AWS SSO에서 커스텀 SAML 2.0 앱 추가 → ACS URL + Audience 입력 → 속성 매핑
- AWS SSO 앱의 SAML 메타데이터 URL을 Cognito SAML Provider에 등록 (교차 연결)
- CloudWatch Dashboard Sharing에 Cognito User Pool을 SSO Provider로 등록
- AWS SSO에서 대상 사용자에게 앱 할당
