terraform 버전
2023.10.29 - [공부/Open Source] - [Keycloak 21/Terraform] AWS SAML 로그인 연동하기
# 1. 별도 realm 생성 (Optional)
master realm과 별도로 유저/그룹 관리를 할 것이기 때문에 realm을 생성한다.
(master realm하고 동일한 유저 관리를 할 것이라면 생략해도 좋을 듯 하다)
나는 infra 라고 만들었다.
# 2. aws client 생성 (urn:amazon:webservices)
먼저 aws sp (서비스 제공자) 파일을 다운받자
curl -O https://signin.aws.amazon.com/static/saml-metadata.xml
infra realm에서 Clients > Import client
위에서 받은 saml-metadata.xml 파일을 Resource file로 넣어준 후, Save
urn:amazon:webservices 라는 client가 생성된다.
# 3. Client Scope 설정
Full scope allowed 라는 설정이 AWS Role 전달 시 SAML 오류를 발생시킨다고 한다. -> 비활성화 해줘야 함
AWS Client > Client scopes > urn:amazon:webservices-dedicated 진입
Scope 탭에서 Full scope allowed -> OFF
# 4. Mapper 설정
3번을 완료한 위치에서, Mappers 탭으로 이동해 Add mapper 클릭 (총 3개 만들어야 함)
## 1. Session Name (User Property)
- Name :
Session Name
- Property :
username
- Friendly Name :
Session Name
- SAML Attribute Name :
https://aws.amazon.com/SAML/Attributes/RoleSessionName
## 2. Session Role (Role list)
- Name :
Session Role
- Role Attribute Name :
https://aws.amazon.com/SAML/Attributes/Role
- Friendly Name :
Session Role
- Single Role Attribute :
ON
## 3. Session Duration (Hardcoded attribute)
- Name :
Session Duration
- Friendly Name :
Session Duration
- SAML Attribute Name :
https://aws.amazon.com/SAML/Attributes/SessionDuration
- Attribute value :
28800
(원하는 Session Duration 값 입력)
# 4. AWS에 Keycloak용 Identity provider 생성
먼저 keycloak infra realm용 idp metadata를 다운받자
curl -o keycloak.xml "https://[keycloak host]/realms/[realm name]/protocol/saml/descriptor"
AWS IAM Console > Identity providers > Add provider
provider 이름 설정 후 위에서 받은 keycloak saml xml 파일을 넣어준다.
# 5. Keycloak용 AWS Role 생성
AWS IAM Console > Roles > Create role
trust entity를 SAML로 선택한 후, 위에서 만든 provider를 선택한다.
이후 원하는 권한과 이름 설정 후 롤 생성을 완료해주자
# 6. AWS Role과 매핑되는 Keycloak Role 생성
거의 다 왔다.
keycloak > aws client > Roles Tap > Create role
Role name을 4, 5번에서 만든 [AWS idp ARN],[AWS Role ARN] 쌍으로 만들어줘야 한다.
(순서는 상관없다)
그 후, AWS 접속할 유저에게 이 롤을 부여해 보자
Users > 유저 선택 > Role mapping > Assign role > client filter로 변경 > 위에서 만든 롤 검색 > Assign
그 후 Keycloak SSO를 통해 AWS에 로그인해보자
SSO URL은 아래와 같다.
https://[keycloak 주소]/realms/[realm 이름]/protocol/saml/clients/amazon-aws
(AWS Client 화면에서 확인 가능하다)
아무튼 로그인해보면...
아까 만든 keycloak-test role로 자동 접속되는 것을 확인할 수 있다.
지금은 role이 하나밖에 없어서 자동 로그인 되었지만, 롤이 여러개인 경우 SSO 화면에서 롤을 선택할 수 있다.
# 마무리
생각보다 너~무 할게 많고 복잡하고 직관적이지 못하다
그래서 난 다 테라폼화 해두었다.
다음 글에서 테라폼 코드를 공유하겠다.
끝!
'공부 > Open Source' 카테고리의 다른 글
[Grafana/helm] Google Oauth 붙이기 (0) | 2023.10.29 |
---|---|
[Redash/helm] Google Oauth 붙이기 (0) | 2023.10.29 |
[Keycloak 21/Terraform] AWS SAML 로그인 연동하기 (0) | 2023.10.29 |
[Keycloak 21] Google idp 추가 (0) | 2023.10.29 |
[Keycloak 21] k8s cluster에 helm chart로 설치하기 (0) | 2023.10.29 |
댓글