본문 바로가기
공부/Open Source

[keycloak/saml2aws] keycloak google user로 aws cli 사용하기

by haejang 2023. 11. 5.
728x90
728x90

 

 

# 상황

  • google idp를 통해 만들어진 keycloak user들이 aws cli를 사용하고 싶음
  • google idp 및 aws client 설정, aws iam role 연동은 끝난 상태

 

# saml2aws 란?

saml 자격증명을 통해 aws 임시 자격 증명을 가져올 수 있는 도구

https://github.com/Versent/saml2aws

 

GitHub - Versent/saml2aws: CLI tool which enables you to login and retrieve AWS temporary credentials using a SAML IDP

CLI tool which enables you to login and retrieve AWS temporary credentials using a SAML IDP - GitHub - Versent/saml2aws: CLI tool which enables you to login and retrieve AWS temporary credentials u...

github.com

 

 

# saml2aws 사용법

# saml2aws 설치 (MAC)
$ brew install saml2aws

# keycloak user 자격증명
$ KEYCLOAK_AWS_URL=https://${keycloak 도메인}/realms/${aws realm}/protocol/saml/clients/amazon-aws
$ KEYCLOAK_USERNAME=honglab97@gmail.com
$ saml2aws configure
? Please choose a provider: KeyCloak
? URL $KEYCLOAK_AWS_URL
? Username $KEYCLOAK_USERNAME
? Password *********
? Confirm *********

account {
  URL: $KEYCLOAK_AWS_URL
  Username: $KEYCLOAK_USERNAME
  Provider: KeyCloak
  MFA: Auto
  SkipVerify: false
  AmazonWebservicesURN: urn:amazon:webservices
  SessionDuration: 3600
  Profile: saml
  RoleARN:
  Region:
}

Configuration saved for IDP account: default

 

KEYCLOAK_AWS_URL 에는 keycloak aws client 콘솔에서 확인할 수 있는

Target IDP initiated SSO URL 을 넣어주면 된다.

 

그리고 Password는 의미가 없다. 아무거나 넣어줘도 된다.

(google idp를 사용하는 상황에서만 의미가 없는건지 뭔지는 잘 모르겠다)

 

아무튼 이렇게 configure를 마치고 login을 해보면..

 

$ saml2aws login
Error authenticating to IdP.: unable to locate saml response field

 

configure할 때 만든 비밀번호를 치든 Google 비밀번호를 치든 실패가 난다.

이는 "키클락 유저 비밀번호" 가 없기 때문이다.

 

# 무슨 소리?

나는 keycloak에 google idp로부터 유저가 프로비저닝되면 끝이라고 생각했다.

google idp user에 이미 유저정보와 비밀번호가 있지 않은가?

-> 비밀번호가 같이 넘어오진 않는 것 같다.

즉 구글유저는 구글패스워드와 별개로 키클락 패스워드를 만들어야 saml2aws login이 가능하다.

 

# keycloak user에게 비밀번호 세팅할 수 있게 해주기

먼저 자신의 비밀번호를 세팅할 권한을 줘야 한다.

-> account client의 manage-account Role을 부여해야 한다.

 

Realm setting > User registration > Default roles > assign roles

Filter by clients > manage-account 선택 및 assign

 

사람들한테 가이드할 땐,

https://${keycloak 도메인}/realms/${aws realm 이름}/account

도메인으로 접속해서 직접 비밀번호 세팅하라고 하면 된다.

account 콘솔 링크 확인하는 법

 

해당 account 콘솔로 진입해서 google 로그인을 하게 되면,

 

패스워드를 세팅할 수 있다.

 

세팅 후, saml2aws login 시 세팅한 비밀번호로 로그인하면 할당된 롤들을 잘 확인할 수 있다.

 

 

끝!!

 

 

 

 

728x90
728x90

댓글