Vault 역할과 AD FS 클레임 발급 정책 간 매핑 오류 트러블슈팅
Vault 역할과 AD FS 클레임 발급 정책 간 매핑 오류 트러블슈팅
디버깅 데이터가 Vault 역할과 AD FS 클레임 발급 정책(Claim Issuance Policy) 사이에 잘못되었거나 존재하지 않는 매핑이 있음을 시사하는 문제를 해결해 봐요.
출처: 문서
본문
디버깅 데이터 예시
[DEBUG] auth.saml.auth_saml_1d2227e7: validating user context for role: api=callback role_name=default-saml
role="{
"token_bound_cidrs":null,
"token_explicit_max_ttl":0,
"token_max_ttl":0,
"token_no_default_policy":false,
"token_num_uses":0,
"token_period":0,
"token_policies":["default"],
"token_type":0,
"token_ttl":0,
"BoundSubjects":["*@example.com","*@ext.example.com"],
"BoundSubjectsType":"glob",
"BoundAttributes":{"http://schemas.xmlsoap.org/claims/Group":["VaultAdmin","VaultUser"]},
"BoundAttributesType":"string",
"GroupsAttribute":"groups"
}"
user context="{
"attributes":
{
"http://schemas.xmlsoap.org/claims/Group":["Domain Users","VaultAdmin"],
"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress":["[email protected]"]
},
"subject":"[email protected]"
}"
분석
vault read를 사용해 현재 역할 구성을 확인하세요.
$ vault read auth/<SAML_PLUGIN_PATH>/role/<ADFS_ROLE>
Key Value
--- -----
bound_attributes map[http://schemas.xmlsoap.org/claims/Group:[VaultAdmin VaultUser]]
bound_attributes_type string
bound_subjects [*@example.com *@ext.example.com]
bound_subjects_type glob
groups_attribute groups
token_bound_cidrs []
token_explicit_max_ttl 0s
token_max_ttl 0s
token_no_default_policy false
token_num_uses 0
token_period 0s
token_policies [default]
token_ttl 0s
token_type default
Vault 역할은 그룹 속성으로 groups를 사용하므로, Vault는 SAML 응답의 사용자 컨텍스트에 다음과 같은 형태의 groups 속성이 포함되기를 기대해요.
user context="{
"attributes":
{
"groups":["<LIST_OF_BOUND_GROUPS>"],
...
}
}"
하지만 SAML 응답은 클레임 발급 정책이 그룹 속성으로 Group을 사용함을 나타내므로, 사용자 컨텍스트는 바인딩된 그룹을 Group 키로 사용해요.
user context="{
"attributes":
{
"http://schemas.xmlsoap.org/claims/Group":["Domain Users","VaultAdmin"],
...
},
"subject":"[email protected]"
}"
해결 방법
문제를 해결하는 첫 번째 방법은 Vault 역할의 group_attribute를 Group으로 업데이트하는 거예요.
$ vault write auth/<SAML_PLUGIN_PATH>/role/<ADFS_ROLE> \
groups_attribute=http://schemas.xmlsoap.org/claims/Group
예를 들면:
$ vault write auth/saml/role/adfs-default \
groups_attribute=http://schemas.xmlsoap.org/claims/Group
문제를 해결하는 두 번째 방법은 AD FS 구성을 groups를 사용하도록 업데이트하고 Vault의 바인딩 속성이 기대하는 그룹과 일치하는지 확인하는 거예요.
- AD FS의 클레임 발급 정책을 정규화되지 않은 이름에
groups를 사용하도록 업데이트하세요. LDAP 속성:Token-Groups - Unqualified Names, 나가는 클레임 유형:groups - Vault 역할의 바인딩 속성이 SAML 응답에 나열된 그룹과 일치하는지 확인하세요. 예를 들면:
$ vault write auth/<SAML_PLUGIN_PATH>/role/<ADFS_ROLE> \
bound_attributes=groups="<AD_GROUP_LIST>"
$ vault write auth/saml/role/default-adfs \
bound_attributes=groups="VaultAdmin,VaultUser"
더 알아보기 (Learn more)
- SAML 인증 메서드 문서
- SAML API 문서
- AD FS 랩 환경 구축하기