본문 바로가기

잡부생활

AD FS 이용해서 AWS SAML 2.0 연동하기

AD FS를 이용하여 AWS SAML 2.0 연동에 대해 설명한다. AD FS 구성이 되어 있다는 전제로 진행한다.

 

개요

- AD FS를 이용해 AD의 계정을 AWS Web Console 또는 CLI에서도 사용 가능하도록 설정한다.

-  AD FS에서 AD의 인증을 통해 AD의 c.value인 Group 값과 AWS IAM Role의 Name 값을 비교하여 1:1 매핑(Mapping) 시켜 동작한다.

- 동작은 AD User Group의 접두사(AWS-) 뒤의 Name과 AWS IAM Role의 접두사(ADFS-) 뒤의 Name을 비교하여 동작한다.

- AD FS는 AD 인증 후 User의 E-mail Address를 AWS Web Console에 전달한다.

- AWS Web Console은 ADFS에서 넘어 온 Role Name과 AWS IAM Role Name을 비교하여 동일한 Role 권한으로 E-mail Address를 이용해 로그인 한다.

 

AD에 Group 생성 및 User 연결

AD DS 서버에 접속하여 Server Manager를 띄운 후 Tools에서 Active Directory Users and Computers를 실행한다.

Active Directory Users and Computers Console이 뜨면 Group을 아래와 같이 생성한다.

- AWS-Dev

- AWS-Production

(Group을 생성할 시 접두사인 "AWS-"는 사용자 정의가 가능하며, 계정 별로 꼭 통일시켜줘야 한다.

Adctive Directory Users and Computers

 

 

Bob이라는 User를 생성한다. (E-mail Address를 꼭 입력한다.)

Bob 계정에 미리 생성한 AWS-Dev와 AWS-Production Group에 연결한다. (두 그룹에 대한 설정을 보기 위함)

AD에 Group 생성 및 User 연결

 

AWS에 SAML 2.0 생성

- AD FS가 설치된 서버에서 아래 URL로 접속하여 .xml 파일을 다운로드 받는다.

https://"yourServerName"/FederationMetadata/2007-06/FederationMetadata.xml

- SAML 2.0을 생서할 때 AWS Console에 로그인하여 IAM Web Console에 접속한다.

- IAM Web Console의 왼쪽 Navigator에서 Identity Providers를 클릭한다.

- 오른쪽에 Identity Providers Console 상단의 Create Provider를 클릭한다.

- Create Provider 마법사가 뜨면 Step 1: Create Provider 창이 뜨며 Provider Type을 SAML로 선택한다.

- 바뀐 UI에서 Provider Name에는 알아볼 수 있는 Name을 지정한다. (Test를 위해 ADFS라고 입력)

- Metadata Document에는 Choose File을 선택하여 앞서 AD FS 서버에서 다운로드 한 .xml 파일을 선택한다.

- 파일이 첨부되면 Next Step을 클릭한다.

- Step 2: Verify Provider Information 창에서 Create를 클릭한다.

Configure Provider

 

AWS IAM Role 생성

- AWS Console에 Login 하여 IAM Web Console에 접속한다.

- IAM Web Console 왼쪽 Navigator에서 Roles를 클릭한다.

- 오른쪽에 Roles Console에서 Create New Role을 클릭한다.

- Step1: Set Role Name에서 Role Name을 다음 Name으로 각각 만든다.

(ADFS-Dev, ADFS-Products)

- Step2: Select Role Type에서 Role For Identity Provider Access를 선택하고, Grant Web Single Sign-in(Web SSO) access to SAML provider 항목을 Select 한다.

- Step3: Establis Trust에서 SAML provider를 ADFS로 선택하고 Next Step을 클릭한다.

- Verify Role Trust 화면에서는 JSON 내용만 확인하고 Next Step을 클릭한다.

- Step4: Attach Policy에서 다음과 같이 Role에 알맞은 Policy를 설정한 후 Next Step을 클릭한다.

(ADFS-Dev: ReadOnlyAccess, ADFS-Products: AdministratorAccess)

- Step5: Review에서 내용을 확인한 후 Create Role을 클릭하여 Role을 생성한다.

 

 

Configuring AWS as a Trusted Relying Party

- AD FS 서버에 접속해서 Server Manager를 띄운 후 Tools에서 AD FS Managedment를 실행한다.

- AD FS Console이 뜨면 왼쪽 Navigator에서 AD FS를 선태갛ㄴ 후 마우스 우 클릭한다.

- 팝업 창에서 Add Relying Party Trust를 클릭한다.

Add Relying Party Tust

 

 

- Add Relying Party trust Wizard가 뜨면 Welcome 화면에서 Start 버튼을 클릭한다.

- Select Data Source 부분에 아래 URL을 캡쳐화면과 같이 입력한 후 Next 버튼을 클릭한다.

(https://signin.aws.amazon.com/static/saml-metadata.xml)

saml-metadata.xml

 

 

- Specify Display Name에 AWS Console에 Login 할 때 구분할 수 있는 Name을 이별갛낟.

(설정하는 값은 나중에 0번 슬라이드의 Login 화면에서 보이는 구분자 값)

Specify Display Name

 

- Configure Multi-fator Authentication Now 화면은 Default 값으로 Next를 클릭한다.

- Choose Issuance Authorization Roles는 Permit all user to access this relying party를 선택한 후 Next 버튼을 클릭한다.

Add Relying Party Trust Wizard

 

 

- Ready to Add Trust 화면에서는 Next를 클릭한다.

- Finish 화면에서 Open the Edit Claim Rules dialog for this relying party trust when the wizard closes에 체크를 풀고 Close를 클릭한다.

Add Relying Party Trust Wizard

 

- AD FS 서버에서 Server Manager를 띄운 후 Tools에서 AD FS Management를 실행한다.

- AD FS Console이 뜨면 왼쪽 Navigator에서 ADFS -> Trust Relationships -> Relating Party Trusts를 선택한다.

- 오른쪽 창에 생성한 Relating Party Trusts를 선택한 후 마우스를 우 클릭한다.

- 마우스 우 클릭으로 뜬 팝업 창의 Edit Claim Rules... 를 선택한다.

AD FS

 

 

- Edit Claim Rules for "Relying Party Trusts Name" 창이 뜨면 Issuance Transform Rules 탭에서 Add Rule.. 을 클릭한다.

- Add Transform Claim Rule Wizard 창이 뜨면 Choose Rule Type에서 Transform an Incoming Claim을 선택하고 Next를 클릭한다.

ADd Transform Claim Rule Wizard

 

- Configure Claim Rule에서 다음과 같이 입력한 후 Finish를 클릭한다.

Claim rule name: NameId

Incoming claim type: Windows Account Name

Outgoing claim type: Name ID

Outgoing name ID format: Persistent Identifier

Pass through all claim values: checked

Add transform Claim Rule Wizard

 

 

- Issuance Transform Rules 탭에서 Add Rule을 클릭한다.

- Add Transform Claim Rule Wizard 창이 뜨면 Choose Rule Type에서 Send LDAP Attributes as Claims을 선택하고 Next를 클릭한다.

Add Transform Claim Rule Wizard

 

 

- Configure Claim Rule에서 다음과 같이 입력한 후 Finish를 클릭한다.

Claim rule name: RoleSessionName

Attribute store: Active Directory

LADP Attribute: E-mail-Addresses

Outgoing Claim Type: 

https://aws.amazon.com/SAML/Attributes/RoleSessionName

Add Transform Claim Rule Wizard

 

- Issuance Transform Rules 탭에서 Add Rule을 클릭한다.

- Add Transform Claim Rule Wizard 창이 뜨면 Choose Rule Type에서 Send Claims Using a Custom Rule을 선택하고 Next를 클릭한다.

Add Transform Claim Rule Wizard

 

 

- Configure Claim Rule에서 다음과 같이 입력한 후 Finish를 클릭한다.

Claim Rule Name: Get AD Groups

Custom Rule

c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"] => add(store = "Active Directory", types = ("http://temp/variable"), query = ";tokenGroups;{0}", param = c.Value);

Add Transform Claim Rule Wizard

 

- Issuance Transform Rules 탭에서 Add rule을 클릭한다.

- Add Transform Claim Rule Wizard 창이 뜨면 Choose Rule Type에서 Send Claims Using a Custom Rule을 선택하고 Next를 클릭한다.

Add Transform Claim Rule Wizard

 

- Configure Claim Rule에서 다음과 같이 입력한 후 Finish를 클릭한다.

Claim Rule Name: Roles

Custom rule(<> 괄호로 묶인 부분들을 수정한 후 기입)

c:[Type == "http://temp/variable", Value =~ "(?i)^AWS-"] => issue(Type = "https://aws.amazon.com/SAML/Attributes/Role", Value = RegExReplace(c.Value, "AWS-", "<AWS IAM Identity Providers ARN>,arn:aws:iam::<AWS Account NO>:role/<AWS Role에서 생성한 접두사 (ex: ADFS-)>"));

Add Transform Claim Rule Wizard

 

 

- Edit Claim Rules for <Relying Party Trusts Name> 창의 Issuance Transform Rules 탭에서 다음과 같이 NameId, Role SessionName, Get AD Groups, Roles가 있는 지 확인 후 OK 버튼을 클릭한다.

Edit Claim Rules for Test AWS Console

 

 

- 브라우저에서 다음과 같은 URL에 접속하면 아래와 같은 화면을 볼 수 있다.

https://"ADFS Server FQDN"/adfs/ls/IdplnitiatedSignOn.aspx

Test ADFS

 

- 로그인을 하면 계정의 Group과 AWS IAM Roles와 연결된 Role이 다음 화면과 같이 뜬다.

- 적절한 Role을 선택하고 Sign In을 클릭한다.

ADFS AWS SSO

 

설정한 E-mail Address로 로그인 된 것을 확인할 수 있다.

ADFS AWS WebConsole

 

참고 자료

AWS Blog

 

Enabling Federation to AWS Using Windows Active Directory, ADFS, and SAML 2.0 | Amazon Web Services

Update from January 17, 2018: The techniques demonstrated in this blog post relate to traditional SAML federation for AWS. These techniques are still valid and useful. However, AWS Single Sign-On (AWS SSO) provides analogous capabilities by way of a manage

aws.amazon.com

AWS Document

 

자격 증명 공급자 및 연동 - AWS Identity and Access Management

자격 증명 공급자 및 연동 AWS 외부의 사용자 자격 증명을 이미 관리하고 있는 경우 AWS 계정에서 IAM 사용자를 생성하는 대신 IAM 자격 증명 공급자를 사용할 수 있습니다. 자격 증명 공급자(IdP)를 사용하면 AWS 외부의 사용자 자격 증명을 관리할 수 있고 이 외부 사용자 자격 증명에 계정의 AWS 리소스에 대한 사용 권한을 부여할 수 있습니다. 기업 사용자 디렉터리처럼 조직 내에 이미 고유의 자격 증명 시스템이 있다면 이 방법이 유용합니다.

docs.aws.amazon.com

AWS Troubleshooting

 

Troubleshooting SAML 2.0 Federation with AWS - AWS Identity and Access Management

Troubleshooting SAML 2.0 Federation with AWS Use the information here to help you diagnose and fix issues that you might encounter when working with SAML 2.0 and federation with IAM. Error: Your Request Included an Invalid SAML Response. To Logout, Click H

docs.amazonaws.cn

 

'잡부생활' 카테고리의 다른 글

CORS (simple, preflight request)  (0) 2020.03.27
알리바바 클라우드(Alibaba cloud) CDN 분석  (0) 2019.12.24
XGBoost 파라미터 정리  (0) 2019.11.06
Windows 10에서 Linux 사용하기  (0) 2019.11.01
OpenVPN, OpenLDAP  (0) 2019.04.23