티스토리 뷰

* AWS Single Sign-On (SSO) 란?

AWS Signle Sign-On은 AWS 계정 및 비즈니스 애플리케이션에 대한 SSO 엑세스 관리를 간소화하는 클라우드 기반 서비스입니다. AWS Organization모든 AWS 계정에 대해 SSO 엑세스 및 사용자 권한을 제어할 수 있습니다. 

 

 

 

* SSO를 사용하게 된 이유?

저는 AWS 파트너사 엔지니어로서 고객들의 MSP 업무를 담당하고 있습니다. 적게는 20개 ~ 많게는 50개의 고객사를 관리하는데 중앙에서 통합 관리를 할 수 있는 방안을 생각하다가 SSO를 도입하게 되었습니다. 

 

- 신규 고객사를 AWS Organization에 추가 등록 할때마다 각 계정에서 엔지니어/빌링/고객 의 IAM 사용자 및 Role을 매번 생성

- 각 계정의 IAM 사용자 관리의 불편 (신규 입사자, 퇴사자 계정 관리)

- Access Key, Secret Key 관리

- 감당할 수 없는 MFA 갯수

 

 

 

* AWS Single Sign-On(SSO) 사용 방법

 

- AWS Single Sing-On(SSO) 활성화

- 누르면 별도의 메시지 없이 바로 활성화 된다. (추후에 삭제 가능)

 

 

 

 

 

- AWS SSO를 사용하기 위해서는 몇가지 요구 사항이 있다.

  > AWS Organization의 모든 기능 활성화

  > AWS Organization Root계정의 AdministratorAccess 권한이 있는 IAM 계정에서만 SSO 활성화 가능

  > 추가 요금 발생 없음

 

 

 

 

 

- AWS SSO 접속 URL의 Prefix 값은 랜덤으로 부여된다.

- [사용자 지정] 을 통하여 URL Prefix 값 변경 가능

 

 

 

 

 

- 사용자 포털 URL 사용자 지정을 통해 SSO 접속 URL을 변경해준다.

  ex) 회사명

 

 

 

 

 

- AWS SSO의 자격 증명 소스는 총 3가지로 구성되어 있다.

  > AWS SSO : 기본값, 모든 사용자/그룹/자격 증명 및 MFA 할당을 관리

  > Active Directory : 자체적으로 관리하는 AD 또는 AWS Managed AD, AD Connector를 이용하여 사용자를 관리

  > 외부 자격 증명 공급자 : Okta 또는 Azure Active Directory 와 같은 IdP 에서 사용자를 관리

단, AWS SSO는 ID 소스로 SAMBA4 기반 Simple AD를 지원하지 않는다.
링크: https://docs.aws.amazon.com/ko_kr/directoryservice/latest/admin-guide/directory_simple_ad.html

 

 

 

 

 

- 먼저, 용도에 맞게 그룹을 생성한다.

ex) Admin, Billing, Read-only 등

 

 

 

 

 

 

- [그룹 이름] 을 입력 하고 생성해준다.

 

 

 

 

 

- 그룹을 생성했으니, 그룹에 추가 할 사용자를 생성해준다.

 

 

 

 

 

- [사용자 이름] 입력

- 사용자가 암호를 받는 방법 선택

   > 암호 설정 지침이 포함된 이메일 을 사용자에게 전송 (링크를 통해서 초기 패스워드를 사용자가 직접 생성)

   > 사용자와 공유할 수 있는 일회용 암호를 생성 (일회용 암호를 사용자에게 공유하여 최초 로그인 후, 변경)

- 이메일 주소, 이름 등 입력

 

 

 

 

 

- 사용자를 역할에 맞는 그룹에 할당

 

 

 

 

 

- 추가된 사용자를 확인할 수 있다.

 

 

 

 

 

- AWS SSO에서 사용자 추가를 완료하게 되면 해당 사용자의 등록된 이메일로 초대 메일이 간다.

- [Accept invitation] 을 눌러주면 초기 패스워드를 설정할 수 있다.
   (가끔 사내 메일시스템에서 차단할 수 있으니 브라우저 새탭에서 초대 링크를 열어야 할 수도 있음)

- SSO URL도 같이 가니 즐겨찾기를 해준다. 

 

 

 

 

 

 

- 제공된 SSO URL 로 접속하면 위와 같은 화면이 나온다. 

- 우측 화면은 로그인했을때 보이는 기본페이지다. 아직 해당계정에 어플리케이션이나 AWS Account, 권한등이 할당되지 않아 아무것도 안보인다.

 

 

 

 

 

 

- 권한 세트를 생성해준다. 

- 해당 권한 세트는 각 AWS Account에 그룹 또는 사용자에 할당하여 사용하는 용도이다.

 

 

 

 

 

- AWS에서 사전에 생성한 권한 세트 or 사용자 지정(Custom) 권한 세트를 사용한다.

 

 

 

 

 

 

- 사전 정의된 권한 세트는 위와 같이 이미 생성되어 있다.

 

 

 

 

 

- 사용자 지정 권한 세트를 사용하여 우리가 평상시에 AWS IAM에서 사용하던 권한들도 부여할 수 있다.

 

 

 

 

 

- 권한 세트 이름을 지정한다. 

- 콘솔 세션 기간을 선택하여 추후 보안감사 요건에 맞게 설정한다.

- 릴레이 상태는 각 사용자별로 해당 AWS Account에 접속했을때 리디렉션 되는 URL을 지정하는 옵션이다.
   > ex. Billing용 계정은 해당 계정으로 접속 시, 결제 대시 보드로 바로 가게 할 수 있다.

 

 

 

 

 

- 이제 사용자, 그룹, 권한세트를 모두 생성했으니 Organization 아래 Linked AWS Account에 사용자 또는 그룹을 할당한다.

 

 

 

 

 

 

- AWS Account에 할당할 SSO 사용자 또는 그룹을 할당한다.

 

 

 

 

 

 

- 해당 그룹에 할당할 권한 세트를 지정한다.

 

 

 

 

 

 

- 검토 후, 제출을 누르면 바로 적용이 된다. 

- 나머지 Billing용 그룹 또한 추가로 지정해준다.

 

 

 

 

 

 

- SSO계정에 AWS Account를 할당 후, 다시 로그인했을때 AWS Account가 보이는 것을 확인할 수 있다.

 

 

 

 

 

 

- 이제 SSO에 속한 모든 계정들에게 MFA 설정을 한다. (AWS에서 MFA설정은 개인적으로 필수라고 생각)

 

 

 

 

 

 

- MFA 설정 값 (사내기준)

   > 로그인할 때마다(상시 활성화) 

   > 인증자 앱

   > 로그인 시 MFA 디바이스를 등록하도록 요구

 

- 별도의 물리적 보안 키, 내장 인증자, FIDO등 도 지원한다.

- 편의를 위해 범용적으로 사용되는 Google Authenticator를 사용할 것이다.

 

 

 

 

 

 

- MFA를 설정하고 다시 로그인을 진행하면 MFA 등록하는 메뉴얼이 표시된다.

- Google Authenticator를 휴대폰에 다운로드하고 [Show QR Code] 를 통해 MFA를 등록한다.

- 최초 생성된 Authenticator 코드(6자리)를 입력하여 MFA를 할당한다.

 

 

 

 

 

- 모든 계정에 사용자 또는 그룹 및 권한을 부여하면 로그인 시, 위와 같이 등록된 모든 AWS Account가 보인다. 

- 이제는 각 계정에 접속하여 IAM 사용자를 생성하지 않아도 된다.

 

 

 

 

 

 

- 각 AWS Account별 Access Key/Secret Key/Token 등은 [Command line or programmatic access] 를 통해 확인할 수 있다.

 

 

 

 

 

 

- 개인적으로는 Option2를 통해서 로컬 PC에 Profile을 지정하여 사용하는 것을 권장한다. 

 

 

 

 

 

 

 

 

- 추가적으로 여러개의 Profile을 사용하여 AWS Credentials를 관리하기 위한 유용한 툴을 하나 공유

https://www.leapp.cloud/

 

Leapp - Make the switch, today.

Manage your Cloud credentials locally and improve your workflow with the only open-source desktop app you’ll ever need.

www.leapp.cloud