OKTA 를 AWS IAM 의 IDP 로 설정하여 SSO 사용하기

JIPA
9 min readFeb 3, 2022

--

이 포스팅에서는 현재 가장 많이 사용되고 있는 계정관리 서비스 중 하나인 OKTA(https://www.okta.com)/를 이용하여 AWS IAM 의 SAML Federation 을 설정하는 방법에 대해 다뤄보려고 합니다.

AWS 환경에서 외부 IdP 와 SAML 을 이용하여 계정을 연동하는 경우는 크게 아래의 두 가지 경우를 생각할 수 있는데요.

첫번째, 외부 IdP 를 계정 관리 및 SSO 로 사용하는 환경에서 IdP 에서 사용자에 대한 인증 및 SSO 을 수행하고 AWS IAM 서비스와 연동하여 IdP 를 통해 인증된 사용자가 IAM 권한을 인가 받는 경우

두번째, 외부 IdP 는 계정 관리만을 수행하고 AWS SSO 서비스와 연동하여 IdP 를 통해 인증된 사용자가 IAM 권한을 인가 받거나 AWS SSO 서비스에 등록된 다른 어플리케이션을 사용하는 경우

이 포스팅의 위 두 가지 중 첫번째 경우를 다룬다고 보시면 될 것 같습니다.

1. OKTA Dev 계정 생성하기

OTKA 를 이용하여 AWS IAM 과 연동하기 위해서는 먼저 OKTA 의 계정이 필요하겠죠. OKTA 에서는 개발자들을 위해 간단하게 사용할 수 있는 무료 계정을 제공하고 있습니다.
아래의 링크에서 회원 가입을 하여 개발자 계정을 발급받도록 하겠습니다.
https://developer.okta.com/

2. 새로운 App Integration 생성

계정이 정상적으로 생성되었다면 관리자 페이지로 로그인 후 화면 좌측의 메뉴에서 “Applications” — “ Applications” 를 선택합니다. 이후 아래와 같은 페이지가 나타나면 “Create App Integration” 을 선택합니다.

“Create App Integration” 버튼을 클릭한 후 나타난 화면에서 SAML 연동을 위하여 “SAML 2.0” 을 선택한 후 Next 를 클릭합니다.

General Settings 에서 App 의 이름을 입력한 후 Next 를 클릭합니다.

다음 화면에서 “Single sign on URL” 과 “Audience URI(SP Entity ID)” 입력 부분에 아래의 값을 각각 입력합니다.

https://signin.aws.amazon.com/saml
urn:amazon:webservices

나머지 모든 값들은 그대로 둔 후 Next 를 클릭합니다.

아래와 같이 마지막 단계를 선택해 준 후 “Finish” 를 클릭합니다.

새로운 App 이 생성되었다면 AWS IAM 과의 연동을 위하여 SAML Metadata 를 다운로드 받아야 합니다.

아래와 같이 새롭게 생성된 App 의 Settings 화면 중간에 위치한 “Identity Provider metadata” 부분에 마우스를 오른쪽 클릭하여 링크의 내용을 저장합니다. 저장 시 확장자는 “.xml” 로 하도록 합니다.

여기까지 진행하였다면 OKTA 에서의 1차 준비는 완료되었습니다.

이제 AWS IAM 설정을 시작하겠습니다.

3. AWS IAM Identity Provider 생성

AWS Management Console 에 로그인 후 IAM 서비스로 이동합니다. 아래와 같이 IAM 메뉴 중 “Identity Providers” 메뉴를 선택한 후 “Identity Provider” 를 추가합니다.

Protocol Type = SAML
Provider Name = 임의의 값
Metadata Document = 조금 전 다운로드받은 .xml 파일

모든 설정이 적용되었다면 “Add Provider” 버튼을 클릭합니다.

Identity Provider 가 정상적으로 생성되었다면 Identity Provider 리스트에서 새로 생성된 Identity Provider 를 클릭하여 아래와 같이 “ARN” 정보를 복사한 후 저장해 두도록 하겠습니다.

4. AWS IAM Role 생성

이제 OKTA 를 통해 인증된 사용자가 사용할 IAM Role 을 생성할 차례입니다. IAM 의 Role 생성 메뉴로 이동하여 아래와 같이 Trusted Entity 를 “SAML 2.0 Federation” 을 선택하고 SAML Provider 리스트에서 조금 전 생성한 OKTA-Demo Provider 를 선택합니다.

API 와 Management Console 모두 허용하기 위해서 “Allow programmatic and AWS Management Console access” 라디오 버튼을 클릭합니다.

Next 버튼을 클릭한 후 권한을 선택합니다. 저는 테스트를 위해 AdministratorAccess 를 선택하였습니다.

Role 의 이름을 입력한 후 Role 생성을 완료합니다.

OKTA 를 위한 IAM Role 생성이 정상적으로 완료되었다면 해당 Role 을 클릭하여 “Role ARN” 정보를 복사하여 기록해두도록 하겠습니다.

이것으로 AWS IAM 에서의 설정도 완료되었습니다.

이제 다시 OKTA 로 돌아가서 마지막 단계의 설정을 진행하도록 하겠습니다.

5. SAML 속성 변경

OKTA 의 관리자 페이지에서 첫번째 단계에서 생성한 App 의 General 메뉴를 클릭합니다. SAML 설정을 수정하기 위해서 General 의 내용 중 “SAML Settings” 의 “Edit” 버튼을 클릭합니다.

SAML 의 여러 설정 중 AWS IAM 에 전달될 속성값을 추가해주어야 합니다. 아래 그림과 같이 “Attribute Statements(optional)” 메뉴에서 아래의 값을 추가하겠습니다.

Name = https://aws.amazon.com/SAML/Attributes/Role
Value = user.userType
Name = https://aws.amazon.com/SAML/Attributes/RoleSessionName
Value = user.nickName

위의 두 값은 각각 User Profile 의 값중 User Type 과 Nick Name 값을 Role 과 RoleSessionName 으로 IAM 에게 전달하겠다는 것을 의미합니다.

위 값이 정상적으로 Next 버튼을 클릭하여 설정을 마무리합니다.

6. OKTA 사용자 생성

이제 OKTA 서비스를 사용할 사용자를 추가할 차례입니다. 관리 화면 좌측의 메뉴에서 “Directory” -” People” 을 선택한 후 “Add person” 버튼을 클릭합니다.

아래와 같이 추가할 사용자의 정보를 입력한 후 “Save” 버튼을 클릭합니다.

입력한 Email 주소로 사용자 활성화를 위한 이메일이 수신되었다면 해당 메일을 클릭하여 사용자를 활성화합니다.

사용자가 정상적으로 생성되었다면 이번에는 사용자에게 위 과정에서 생성한 App 을 추가해주어야 합니다.

생성된 사용자를 클릭한 후 나타나는 메뉴에서 “Applications” 를 선택한 후 “Assign Applications” 버튼을 클릭합니다.

나타난 App 리스트에서 이전 과정에서 생성한 AWS-IAM-Federation 의 우측에 위치한 “Assign” 버튼을 클릭하여 App 을 추가하도록 합니다.

다음 화면에서 아래와 같이 User Name 정보를 확인한 후 저장합니다.

App 할당이 정상적으로 완료되었다면 사용자의 Applications 메뉴에 아래와 같이 App 이 추가되어 있는 것을 확인할 수 있습니다.

이제 마지막 단계입니다.

사용자의 Profile 메뉴로 이동하여 속성값 수정을 위하여 “Edit” 버튼을 클릭합니다.

아래와 같이 이전 과정에서 지정하였던 NickName 과 User Type 에 대한 값을 각각 RoleSession Name 으로 사용할 값과 기록해두었던 “Role ARN” “Identity Provider ARN”정보를 입력합니다.

User Type 에 입력하여야 하는 “Role ARN” 과 “Identity Provider ARN” 정보는 아래와 같이 “,” 로 구분하여 함께 넣도록 합니다.

7. 연동 테스트

이제 모든 설정이 마무리되었습니다.

지금까지의 설정들이 모두 정상적으로 이뤄졌는지 확인하기 위해서 OKTA 의 로그인 페이지에서 위 과정에서 추가한 사용자의 계정으로 로그인하도록 하겠습니다.

로그인이 정상적으로 이뤄졌다면 아래와 같이 “AWS-IAM-Federation” 이라는 App 이 My Apps 리스트에 있는 것을 확인할 수 있습니다.

SAML 연동을 통해 정상적으로 AWS IAM Federation 이 이뤄지는지 확인하기 위하여 “AWS-IAM-Federation” 버튼을 클릭합니다.

모든 설정이 정상적이라면 아래와 같이 위 과정에서 지정한 IAM Role 과 RoleSessionName 을 이용하여 Federation 이 이뤄지는 것을 확인할 수 있습니다.

외부 Identity Provider 를 사용하여 Federation 구성을 하는 것은 AWS IAM 사용의 Best Practice 중 하나입니다. OKTA 기반으로 IdP Federation 을 고려하시는 분들께 참고가 되기를 바랍니다.

감사합니다.

--

--

JIPA
JIPA

Written by JIPA

Always Day 1. Security is job zero.

No responses yet