Authentication Federation
July 2022 (207 Words, 2 Minutes)
Authentication Federation
authentication federation은 사용자 ID와 액세스 권한이 신뢰할 수 있는 여러 조직 또는 시스템에서 공유되는 프로세스이다. 사용자가 단일 credentials를 통해 서로 다른 시스템 또는 조직의 리소스에 액세스할 수 있도록 하는 방법이다.
인증 federation에서 Idenity Provider(IdP)는 사용자를 인증하고, 서비스에 액세스하기 위한 token이나 assertion을 제공한다. 보통 IdP는 SAML이나 OIDC(OpenID Connect) 같은 표준 프로토콜 기반으로 통신한다.
- Identity Federation : Identity Provider, Service Provider간에 사용자를 인증하고, authorization을 위한 정보를 전달하는 시스템
- Identity Provider : 사용자 로그인 정보를 저장하고 관리하는 주체
- Service Provider : Identity Provider에 의해 제공된 인증 및 인가 정보를 기반으로 서비스를 제공하는 주체
- Open Standards : OIDC( OpenID Connect ), SAML, OAuth 2.0와 같은 공개 표준
Authentication vs. Authorization?
authentication은 identity, access에 대한 관리를 의미하며, 사용자가 누구인지를 검증한다. 주로 Username, Password를 사용하거나 SSO를 통해 로그인하는 경우를 포함한다.
authorization은 리소스에 접근하기 위한 permission을 제공하는 것을 의미한다.
Federation Systems
AWS Cognito
AWS에서 권장하는 인증 방식은 access key 대신 임시 보안 자격 증명(IAM Role)을 사용하고 모든 AWS 계정 루트 사용자 access key는 비활성화하는 것이다.
AWS Cognito User Pool은 자체적으로 Identity Provider 역할을 하거나, Social Identity Provider, SAML Identity Provider를 사용하는 인증 방식이 있다.
- AWS cognito identiy pool은 인증을 위해 federated identity를 사용한다.
- Service Provider : Cognito Identiy Pool
- Idenity Provider : Cognito User Pool
- Idenity Provider에서 사용자 인증이 완료되면, Identity Pool에 token을 발행하여 사용자 접근 권한을 관리한다. Identity Pool은 AWS STS를 통해 IAM Roles를 기반으로 사용자의 리소스에 대한 접근을 허용한다.
KeyCloak
국제적인 인증, 인가 표준(SAML, OAuth 2.0 등)을 모두 제공하는 오픈소스로, Kubernetes, MSA 환경에 최적화된 솔루션이다.
keycloak은 모든 메타 데이터, 구성을 관리할 수 있는 네임스페이스와 같다.
- 표준 프로토콜( OpenID Connect + OAuth 2.0, SAML ) 지원
- 기본적으로 Java 기반의 H2 DB를 제공한다.
- 세분화된 권한 부여 정책 및 다양한 액세스 제어 매커니즘으로 리소스 보호
- Attribute-Based-Access-Contorl
- Role-Based-Access-Control
- User-Based-Access-Control
- Context-Based-Access-Control
- Rule-Based-Access-Control
- Time-Based-Access-Control
- 중앙 집중형 정책 결정
- REST 기반
-
권한 부여 워크플로 및 사용자 관리 액세스
Reference
- Role-based access control
- Attribute-based access control
- 페더레이션 아이덴티티란 무엇인가요?
Cognito
- Amazon Cognito를 이용한 OIDC 인증/인가 프로세스
- Pre Token Generator Lambda Trigger
- How Amazon Cognito works with IAM
- How to start using AWS Cognito Authorize, Authenticate and Federate user in [2021]
Keycloak
- https://alice-secreta.tistory.com/28
- https://www.keycloak.org/docs/latest/authorization_services/#_overview_architecture
- https://www.comakeit.com/blog/quick-guide-using-keycloak-identity-access-management/
- https://developers.redhat.com/blog/2019/12/11/keycloak-core-concepts-of-open-source-identity-and-access-management#wrapping_up