12.7. 클라이언트 정책
클라이언트 애플리케이션을 쉽게 보호할 수 있도록 하려면 다음 사항을 통합된 방식으로 구현하는 것이 좋습니다.
- 클라이언트에서 보유할 수 있는 구성에 대한 정책 설정
- 클라이언트 구성 검증
- FAPI(Flanin-grade API)와 같은 필수 보안 표준 및 프로파일 준수
이러한 점을 통합된 방식으로 실현하기 위해 클라이언트 정책 개념이 도입되었습니다.
12.7.1. 사용 사례
클라이언트 정책은 다음과 같은 점을 인지하고 있습니다.
- 클라이언트에서 보유할 수 있는 구성에 대한 정책 설정
- 클라이언트의 구성 설정은 클라이언트 생성/업데이트 중에 클라이언트 정책에서 시행할 수 있지만 특정 클라이언트와 관련된 Red Hat Single Sign-On 서버에 대한 OpenID Connect 요청 중에도 적용할 수 있습니다. Red Hat Single Sign-On은 보안 애플리케이션 및 서비스 가이드에 설명된 클라이언트 등록 정책을 통해 유사한 기능을 지원합니다. 그러나 클라이언트 등록 정책은 OIDC 동적 클라이언트 등록만 처리할 수 있습니다. 클라이언트 정책에는 클라이언트 등록 정책이 수행할 수 있는 작업뿐만 아니라 다른 클라이언트 등록 및 구성 방법이 포함됩니다. 현재 계획은 클라이언트 등록이 클라이언트 정책으로 대체되는 것입니다.
- 클라이언트 구성 검증
- Red Hat Single Sign-On은 코드 교환을 위한 Proof Key for Code Security, Request Object Signing Algorithm, Holder-of-Key Token 등과 같은 설정을 따르는지 여부를 검증할 수 있습니다. 각 설정 항목(관리 콘솔, 스위치, 풀다운 메뉴 등)으로 지정할 수 있습니다. 클라이언트 애플리케이션을 보호하려면 관리자가 적절한 방식으로 많은 설정을 설정해야 하므로 관리자가 클라이언트 애플리케이션을 보호하기가 어렵습니다. 클라이언트 정책에서는 위에서 언급한 클라이언트 구성에 대해 이러한 유효성 검사를 수행할 수 있으며 고급 보안 요구 사항을 충족하도록 일부 클라이언트 구성 스위치를 자동으로 설정할 수도 있습니다. 향후 개별 클라이언트 구성 설정은 필요한 검증을 직접 수행하는 클라이언트 정책으로 대체될 수 있습니다.
- FAPI와 같은 필수 보안 표준 및 프로파일 준수
- 글로벌 클라이언트 프로필 은 기본적으로 Red Hat Single Sign-On에서 사전 구성된 클라이언트 프로필입니다. 이는 FAPI 와 같은 표준 보안 프로필을 준수하도록 사전 구성되어 있으므로 관리자가 특정 보안 프로필을 준수하도록 클라이언트 애플리케이션을 쉽게 보호할 수 있습니다. 현재 Red Hat Single Sign-On에는 FAPI 1 사양 지원을 위한 글로벌 프로필이 있습니다. 관리자는 FAPI를 준수해야 하는 클라이언트를 지정하도록 클라이언트 정책을 구성해야 합니다. 관리자는 클라이언트 프로필 및 클라이언트 정책을 구성할 수 있으므로 Red Hat Single Sign-On 클라이언트가 SPA, Native App, Open CloudEventing 등과 같은 다른 다양한 보안 프로필을 쉽게 준수할 수 있습니다.
12.7.2. 프로토콜
클라이언트 정책 개념은 특정 프로토콜과 독립적입니다. 그러나 Red Hat Single Sign-On은 현재 OpenID Connect (OIDC) 프로토콜 에서만 지원합니다.
12.7.3. 아키텍처
클라이언트 정책은 Condition, Executor, Profile 및 Policy의 네 가지 구성 요소로 구성됩니다.
12.7.3.1. 상태
조건은 정책이 채택되는 클라이언트와 채택 시기를 결정합니다. 클라이언트 요청(OIDC 인증 요청, 토큰 끝점 요청 등) 중에 다른 조건을 확인하는 경우 클라이언트 생성/업데이트 시점에 일부 조건이 확인됩니다. 이 조건은 지정된 기준이 충족되었는지 확인합니다. 예를 들어 일부 조건은 클라이언트의 액세스 유형이 기밀인지 여부를 확인합니다.
조건 자체는 단독으로 사용할 수 없습니다. 나중에 설명하는 정책에서 사용할 수 있습니다.
조건은 다른 구성 가능한 공급자와 동일하게 구성할 수 있습니다. 구성할 수 있는 것은 각 조건의 특성에 따라 다릅니다.
다음 조건이 제공됩니다.
- 클라이언트를 생성/업데이트하는 방법
- 동적 클라이언트 등록(초기 액세스 토큰 또는 등록 액세스 토큰으로 익명 또는 인증)
- 관리 REST API(Admin 콘솔 등)
예를 들어 클라이언트를 생성할 때 이 클라이언트가 초기 액세스 토큰(Anonymous Dynamic Client Registration) 없이 OIDC Dynamic Client Registration에 의해 생성될 때 이 클라이언트를 true로 평가하도록 구성할 수 있습니다. 따라서 이 조건을 사용하여 OIDC 동적 클라이언트 등록을 통해 등록된 모든 클라이언트가 FAPI 준수 여부를 확인할 수 있습니다.
- 클라이언트의 작성자(특정 역할 또는 그룹에 존재함)
- OpenID Connect 동적 클라이언트 등록에서 클라이언트의 작성자는 액세스 토큰을 사용하여 실제로 등록 엔드포인트에 액세스하는 기존 클라이언트의 서비스 계정이 아닌 새 클라이언트를 생성하기 위한 액세스 토큰을 가져오기 위해 인증된 최종 사용자입니다. Admin REST API에서 등록하면 클라이언트의 작성자는 Red Hat Single Sign-On 관리자와 같은 최종 사용자입니다.
- 클라이언트 액세스 유형 (기밀, 공용, 베어러 전용)
- 예를 들어 클라이언트가 권한 부여 요청을 보내면 이 클라이언트가 비공개인 경우 정책이 채택됩니다.
- 클라이언트 범위
-
클라이언트에 특정 클라이언트 범위(기본값 또는 현재 요청에 사용된 선택적 범위)가 있는 경우 true로 평가됩니다. 예를 들어
fapi-example-scope
범위의 OIDC 권한 부여 요청이 FAPI 호환이 되도록 할 수 있습니다. - 클라이언트 역할
- 지정된 이름의 클라이언트 역할이 있는 클라이언트에 적용
- 클라이언트 도메인 이름, 호스트 또는 IP 주소
- 클라이언트의 특정 도메인 이름에 적용됩니다. 또는 관리자가 특정 호스트 또는 IP 주소에서 클라이언트를 등록/업데이트하는 경우.
- 모든 클라이언트
- 이 조건은 항상 true로 평가됩니다. 예를 들어 특정 영역의 모든 클라이언트가 FAPI 준수 여부를 확인하는 데 사용할 수 있습니다.
12.7.3.2. executor
executor는 정책이 채택되는 클라이언트에서 실행되는 작업을 지정합니다. executor는 하나 또는 여러 개의 지정된 작업을 실행합니다. 예를 들어 일부 executor는 권한 부여 요청의 매개변수 redirect_uri
값이 권한 부여 끝점의 사전 등록된 리디렉션 URI 중 하나와 정확히 일치하는지 확인하고 그렇지 않은 경우 이 요청을 거부합니다.
Exutor는 단독으로 사용할 수 없습니다. 나중에 설명하는 프로필에서 사용할 수 있습니다. ???
executor는 다른 구성 가능한 공급자와 동일하게 구성할 수 있습니다. 구성할 수 있는 것은 각 executor의 특성에 따라 다릅니다.
executor는 다양한 이벤트에 대해 작동합니다. executor 구현에서는 특정 유형의 이벤트를 무시할 수 있습니다(예: OIDC 요청
개체 확인에 대한 executor는 OIDC 권한 부여 요청에서만 작동합니다). 이벤트는 다음과 같습니다.
- 클라이언트 생성(동적 클라이언트 등록을 통한 생성 포함)
- 클라이언트 업데이트
- 권한 부여 요청 전송
- 토큰 요청 전송
- 토큰 새로 고침 요청 전송
- 토큰 해지 요청 전송
- 토큰 인트로스펙션 요청 전송
- userinfo 요청 전송
- 새로 고침 토큰을 사용하여 로그 아웃 요청 전송
각 이벤트에서 executor는 여러 단계에서 작업할 수 있습니다. 예를 들어 클라이언트를 생성/업데이트할 때 executor는 특정 클라이언트 설정을 자동 구성하여 클라이언트 구성을 수정할 수 있습니다. 그 후 executor는 검증 단계에서 이 설정을 검증합니다.
이 실행자를 위한 몇 가지 목적 중 하나는 FAPI와 같은 클라이언트 적합성 프로파일의 보안 요구 사항을 실현하는 것입니다. 이렇게 하려면 다음 실행자가 필요합니다.
- 클라이언트에 보안 클라이언트 인증 방법이 사용됩니다.Enforce Secure Client Authentication method is used for the client
- enforce Holder-of-key 토큰 사용
- 코드 교환에 대한 Proof Key 적용 (PKCE) 사용
- 서명 JWT 클라이언트 인증 (private-key-jwt) 에 대한 보안 서명 알고리즘 적용
- HTTPS 리디렉션 URI를 적용하고 구성된 리디렉션 URI에 와일드카드가 포함되어 있지 않은지 확인합니다.
-
높은 보안 수준을 충족하는 OIDC
요청
오브젝트 적용 - FAPI 1 사양에 설명된 대로 분리된 서명 을 포함하여 OIDC 하이브리드 워크플로우의 응답 유형을 시행합니다. 즉, 인증 응답에서 반환된 ID 토큰에는 사용자 프로필 데이터가 포함되지 않습니다.
-
CSRF를 방지하기 위해 보다 안전한
상태
및nonce
매개 변수 처리를 시행 - 클라이언트 등록 시 보안 서명 알고리즘 적용
-
CIBA 요청에
바인딩_message
매개변수 적용 - 클라이언트 보안 순환적용
12.7.3.3. 프로필
프로필은 FAPI와 같은 보안 프로필을 실현할 수 있는 여러 실행자로 구성됩니다. 프로필은 executors와 함께 Admin REST API(Admin Console)에서 구성할 수 있습니다. 세 개의 글로벌 프로필이 있으며 사전 구성된 실행자, FAPI Advanced 및 FAPI CIBA 사양을 준수하여 기본적으로 Red Hat Single Sign-On에서 구성됩니다. 보다 자세한 내용은 보안 애플리케이션 및 서비스 가이드의 F API 섹션에 있습니다.
12.7.3.4. 정책
정책은 여러 조건과 프로필로 구성됩니다. 이 정책은 이 정책의 모든 조건을 충족하는 고객에게 채택될 수 있습니다. 이 정책은 여러 프로필을 참조하며 이러한 프로필의 모든 실행자는 이 정책이 적용된 클라이언트에 대해 작업을 실행합니다.
12.7.4. 설정
정책, 프로필, 조건, executors는 Admin REST API(관리 콘솔)에서도 구성할 수 있습니다. 이를 위해 관리자가 영역 당 클라이언트 정책을 가질 수 있음을 의미합니다.
글로벌 클라이언트 프로필 은 각 영역에서 자동으로 사용할 수 있습니다. 그러나 기본적으로 구성된 클라이언트 정책은 없습니다. 즉, 관리자는 예를 들어 해당 영역의 클라이언트가 FAPI를 준수하도록 하려면 항상 클라이언트 정책을 생성해야 합니다. 글로벌 프로필은 업데이트할 수 없지만 관리자는 글로벌 프로필 구성에서 약간의 변경을 수행하려는 경우 관리자가 쉽게 템플릿을 사용하여 자체 프로필을 만들 수 있습니다. 관리 콘솔에서 사용할 수 있는 JSON 편집기가 있으며 일부 글로벌 프로필을 기반으로 새 프로필 생성을 단순화합니다.
12.7.5. 이전 버전과의 호환성
클라이언트 정책은 보안 애플리케이션 및 서비스 가이드에 설명된 클라이언트 등록 정책을 대체할 수 있습니다. 그러나 클라이언트 등록 정책도 여전히 공존합니다. 즉, 예를 들어 클라이언트를 생성/업데이트하기 위한 동적 클라이언트 등록 요청 중에 클라이언트 정책과 클라이언트 등록 정책이 모두 적용됩니다.
현재 계획은 클라이언트 등록 정책 기능을 제거하고 기존 클라이언트 등록 정책이 새 클라이언트 정책으로 자동 마이그레이션됩니다.
12.7.6. 클라이언트 시크릿 순환 예
클라이언트 시크릿 순환 의 구성 예를 참조하십시오.