기본적으로 직원 ID 제휴 세션의 최대 시간은 12시간입니다. 세션 길이 연장을 사용하면 조직에서 Looker (Google Cloud 핵심 서비스) 고객을 위해 최대 90일까지 지속되는 세션을 구성할 수 있습니다.
세션 시간이 길어지면 직원 사용자가 외부 ID 공급업체 (IdP)에 대해 매일 재인증하지 않아도 Looker (Google Cloud 핵심)에 중단 없이 연결할 수 있습니다. Looker (Google Cloud 핵심 서비스) 내의 사용자 상호작용은 Looker (Google Cloud 핵심 서비스) 세션 길이 구성에 의거하여 관리됩니다. 연장된 세션 전반에서 보안을 유지하기 위해 Google Cloud 백그라운드에서 외부 ID 공급업체 (IdP)의 사용자 속성과 그룹 멤버십을 주기적으로 동기화합니다.
이 문서에서는 프로젝트 범위 제어를 사용하여 Access Context Manager API로 확장 세션 정책을 정의하고, 직원 풀 제공업체를 구성하고, 활성 바인딩을 관리하는 방법을 설명합니다.
개요
직원 ID 제휴는 Access Context Manager Google Cloud 액세스 바인딩을 사용하여 연장된 세션 길이를 구성합니다.
- Google Cloud 액세스 바인딩: 관리자는 조직의 모든 직원 풀에 조직 전체에 적용되는 Access Context Manager를 사용하여 세션 길이 정책을 정의합니다.
restricted_project범위를 사용하면 정책에서 최대 90일의 연장된 세션을 부여하며, 해당 프로젝트가 소유한 Looker (Google Cloud 핵심 서비스) 인스턴스에만 영향을 미칩니다. - 백그라운드 속성 동기화:
- OIDC:
offline_access범위가 있는 OIDC 승인 코드 플로우 (백그라운드에서 외부 IdP의 사용자 속성 및 그룹 멤버십을 주기적으로 새로고침하는 데 갱신 토큰 사용) 또는 SCIM 프로비저닝을 통해 지원됩니다. - SAML: SAML 공급업체의 경우 SCIM 프로비저닝을 사용하여 사용자 속성과 그룹 멤버십이 최신 상태로 유지됩니다.
- OIDC:
- 오래된 데이터 보호: 24시간 이내에 외부 IdP에서 사용자 속성을 새로고침할 수 없는 경우 (예: 사용자가 프로비저닝 해제되었거나 IdP에서 사용자 인증 정보가 취소된 경우) Google Cloud 세션을 종료합니다.
시작하기 전에
연장된 세션 길이를 구성하기 전에 필요한 Identity and Access Management 권한이 있고 API가 사용 설정되어 있는지 확인하세요.
필수 역할 및 권한
연장된 세션 길이를 구성하는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.
- 직원 ID 풀 공급업체 구성: 직원 풀 또는 조직에 대한 직원 풀 관리자 (
roles/iam.workforcePoolAdmin) - Access Context Manager 클라우드 액세스 바인딩 관리: 조직 수준의 클라우드 액세스 바인딩 관리자 (
roles/accesscontextmanager.gcpAccessAdmin) 이 역할은 Access Context Manager 액세스 바인딩을 생성, 보기, 업데이트, 삭제하는 데 필요한 권한을 제공합니다.
API 사용 설정
프로젝트에서 Access Context Manager 및 IAM API를 사용 설정합니다.
gcloud services enable \
accesscontextmanager.googleapis.com \
iam.googleapis.com
제한사항 및 요구사항
연장된 세션 길이를 구성하기 전에 다음 요구사항 및 제한사항을 검토하세요.
- 지원되는 애플리케이션: 세션 길이 연장은 Looker (Google Cloud 핵심 서비스)에만 적용됩니다.
- 필수 프로젝트 범위 (
restricted_project): Looker (Google Cloud 핵심 서비스) 인스턴스 (projects/{PROJECT_NUMBER})를 소유한 Google Cloud 프로젝트를 지정하는restricted_project클라이언트 범위를 사용하여scopedAccessSettings내에서 세션 설정을 구성해야 합니다.- 지정된 프로젝트가 소유한 Looker (Google Cloud 핵심 서비스) 애플리케이션만 ESL 정책의 영향을 받습니다.
- 다른 모든 애플리케이션 (및 다른 프로젝트에서 소유한 Looker (Google Cloud 핵심 서비스) 애플리케이션)은 정책의 영향을 받지 않습니다.
- 세션 시간 범위: 세션 시간은 최소 1시간 (
3600s)에서 최대 90일 (7776000s) 사이여야 합니다. - 세션 설정 매개변수 요구사항:
session_length_enabled:true로 설정해야 합니다.session_length: 1시간 (3600s)에서 90일 (7776000s) 사이의 필수 기간입니다.session_reauth_method: 설정되지 않았거나LOGIN로 설정되어야 합니다.use_oidc_max_age: 설정되지 않았거나false로 설정되어야 합니다.max_inactivity: 설정되지 않아야 합니다 (또는 기본값0s). 유휴 세션 제한 시간은restricted_project바인딩에서 지원되지 않습니다.
- 지원되는 ID 공급업체:
- OIDC: 승인 코드 플로우 및
offline_access범위로 구성되어 새로고침 토큰을 발급하거나 SCIM 프로비저닝으로 구성된 OIDC 공급자가 필요합니다. - SAML 2.0: 직원 풀 제공업체에서 SCIM 프로비저닝이 사용 설정되어 있어야 합니다.
- OIDC: 승인 코드 플로우 및
- 속성 비활성 기준: 고정된 24시간 비활성 기준이 적용됩니다. Google Cloud 가 24시간 이내에 IdP에서 사용자 속성을 새로고침할 수 없는 경우 세션이 무효화되며 사용자가 다시 인증해야 합니다.
- Access Context Manager 제약 조건:
- 단일 조직 바인딩: 직원 풀의 연장된 세션 길이 바인딩은 조직의 '모든 직원 풀' 주 구성원 (
principalSet://cloudresourcemanager.googleapis.com/organizations/{ORG_ID}/type/WorkforcePool)을 타겟팅해야 합니다. 이 제휴 주 구성원 식별자는 조직의 모든 직원 풀에 조직 전체에 적용되므로 조직당 이러한 바인딩이 하나만 있을 수 있습니다. 직원 풀 전반에서 여러 Looker (Google Cloud 핵심 서비스) 프로젝트의 확장 세션을 구성하려면 단일 바인딩의scopedAccessSettings목록 내에 여러restricted_project범위 블록을 포함하세요. - 직원 풀 바인딩에서는 액세스 수준 (
access_levels,dry_run_access_levels)이 지원되지 않습니다. - 직원 풀 바인딩에는
GcpUserAccessBinding에 직접 있는 최상위sessionSettings가 지원되지 않습니다. 설정은scopedAccessSettings.activeSettings.sessionSettings내에서 정의해야 합니다.
- 단일 조직 바인딩: 직원 풀의 연장된 세션 길이 바인딩은 조직의 '모든 직원 풀' 주 구성원 (
직원 풀 제공업체 구성
세션 길이를 연장하려면 직원 풀 제공업체가 백그라운드 속성 새로고침을 지원하도록 구성되어야 합니다. 공급업체가 OIDC 또는 SAML 프로토콜을 사용하도록 구성할 수 있습니다.
OIDC 공급업체 구성
OIDC 제공업체의 백그라운드 속성 새로고침은 갱신 토큰 (offline_access 범위) 또는 SCIM 프로비저닝을 사용하여 처리할 수 있습니다. 토큰 기반 속성 새로고침을 사용하는 경우:
- 외부 IdP에서 승인 코드 플로우를 사용하여 OIDC 애플리케이션을 구성하고 갱신 토큰이 반환되도록 오프라인 액세스를 사용 설정합니다.
- Google Cloud에서 OIDC 직원 풀 제공업체의 추가 범위에
offline_access을 추가합니다.
연장된 세션 길이 정책이 의도한 대로 적용되려면 Google Cloud 조직의 모든 직원 ID 풀에서 오프라인 사용을 구성해야 합니다.
gcloud
제공업체에 이미 추가 범위가 있는 경우 덮어쓰지 않도록 offline_access와 함께 포함하세요.
gcloud iam workforce-pools providers update-oidc PROVIDER_ID \
--workforce-pool=WORKFORCE_POOL_NAME \
--location=global \
--web-sso-additional-scopes="offline_access[,EXISTING_ADDITIONAL_SCOPES]"
다음을 바꿉니다.
PROVIDER_ID: 직원 ID 풀 공급업체의 이름입니다.WORKFORCE_POOL_NAME: 직원 ID 풀의 이름입니다.EXISTING_ADDITIONAL_SCOPES: 제공업체에서 이전에 구성된 쉼표로 구분된 추가 범위입니다. 기존 추가 범위가 없는 경우 이 매개변수를 생략합니다.
REST API
PATCH 요청을 보내 제공업체를 업데이트합니다. offline_access와 함께 기존 추가 범위를 포함합니다.
PATCH https://iam.googleapis.com/v1/locations/global/workforcePools/WORKFORCE_POOL_NAME/providers/PROVIDER_ID?updateMask=oidc.webSsoConfig.additionalScopes
요청 본문:
{
"oidc": {
"webSsoConfig": {
"additionalScopes": [
"offline_access"
]
}
}
}
다음을 바꿉니다.
WORKFORCE_POOL_NAME: 직원 ID 풀의 이름입니다.PROVIDER_ID: 직원 ID 풀 공급업체의 ID입니다.
SAML 제공업체 구성
SAML 제공업체의 경우 백그라운드 속성 새로고침에는 SCIM 프로비저닝이 필요합니다.
- 직원 풀 공급업체에 SCIM 테넌트를 설정합니다.
- SAML ID 공급업체에서 SCIM 엔드포인트로 사용자 및 그룹 프로비저닝을 구성합니다.
단계별 안내는 직원 ID 제휴를 위한 SCIM 프로비저닝을 참고하세요.
Looker (Google Cloud 핵심 서비스)의 정책 구성 예시
조직의 직원 풀에 연장된 세션 길이 정책을 할당하고 Looker (Google Cloud 핵심) 인스턴스를 호스팅하는 프로젝트로 정책 범위를 지정하는 GcpUserAccessBinding 리소스를 만듭니다.
gcloud
esl-binding.yaml이라는 YAML 파일에 정책을 정의합니다.
scopedAccessSettings:
- scope:
clientScope:
restrictedProject:
name: projects/PROJECT_NUMBER
activeSettings:
sessionSettings:
sessionLength: 7776000s
sessionLengthEnabled: true
sessionReauthMethod: LOGIN
액세스 바인딩을 만듭니다.
gcloud access-context-manager cloud-bindings create \
--organization=ORG_ID \
--federated-principal="principalSet://cloudresourcemanager.googleapis.com/organizations/ORG_ID/type/WorkforcePool" \
--binding-file="esl-binding.yaml"
다음을 바꿉니다.
ORG_ID: Google Cloud 조직 ID (예:123456789012)PROJECT_NUMBER: 타겟 Looker (Google Cloud 핵심 서비스) 인스턴스를 소유한 프로젝트 번호입니다 (예:987654321098). 이 프로젝트가 소유한 Looker (Google Cloud 핵심 서비스) 애플리케이션만 세션 기간이 연장됩니다.sessionLength: 세션 시간(초) 뒤에s가 옵니다. 예를 들어7776000s은 90일 세션을 지정합니다.sessionLengthEnabled:true로 설정합니다.sessionReauthMethod:LOGIN로 설정합니다 (또는 설정하지 않은 채로 둡니다).
REST API
Access Context Manager API에 POST 요청을 전송합니다.
POST https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings
JSON 요청 본문:
{
"principal": {
"federatedPrincipal": "principalSet://cloudresourcemanager.googleapis.com/organizations/ORG_ID/type/WorkforcePool"
},
"scopedAccessSettings": [
{
"scope": {
"clientScope": {
"restrictedProject": {
"name": "projects/PROJECT_NUMBER"
}
}
},
"activeSettings": {
"sessionSettings": {
"sessionLength": "7776000s",
"sessionLengthEnabled": true,
"sessionReauthMethod": "LOGIN"
}
}
}
]
}
다음을 바꿉니다.
ORG_ID: Google Cloud 조직 ID입니다 (예:123456789012).PROJECT_NUMBER: 타겟 Looker (Google Cloud 핵심 서비스) 인스턴스를 소유한 프로젝트 번호입니다 (예:987654321098). 이 프로젝트가 소유한 Looker (Google Cloud 핵심 서비스) 애플리케이션만 세션 기간이 연장됩니다.sessionLength: 세션 시간(초) 뒤에s가 옵니다. 예를 들어7776000s은 90일 세션을 지정합니다.sessionLengthEnabled:true로 설정합니다.sessionReauthMethod:LOGIN로 설정합니다 (또는 설정하지 않은 채로 둡니다).
바인딩 보기 및 나열
바인딩은 조직의 모든 직원 풀에 적용되므로 조직당 액세스 바인딩은 최대 하나입니다.
활성 바인딩 나열
조직의 직원 풀 액세스 바인딩을 나열하려면 principal:federatedPrincipal 필터를 사용합니다.
gcloud
gcloud access-context-manager cloud-bindings list \
--organization=ORG_ID \
--filter="principal:federatedPrincipal"
REST API
GET https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings?filter=principal:federated_principal
바인딩 세부정보 가져오기
특정 직원 풀 액세스 바인딩의 세부정보를 보려면 다음을 실행하세요.
gcloud
gcloud access-context-manager cloud-bindings describe \
--binding=BINDING_NAME
BINDING_NAME을 바인딩의 전체 리소스 이름으로 바꿉니다 (예: organizations/123456789012/gcpUserAccessBindings/b1234567890).
REST API
GET https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings/BINDING_ID
다음을 바꿉니다.
ORG_ID: Google Cloud 조직 ID입니다 (예:123456789012).BINDING_ID: 액세스 바인딩의 ID입니다 (예:b1234567890).
액세스 바인딩 업데이트
기존 인력 풀 액세스 바인딩을 업데이트하여 세션 길이를 수정하거나, 새 프로젝트 범위를 추가하거나, 기존 프로젝트 범위를 삭제할 수 있습니다.
gcloud
updated-esl-binding.yaml이라는 YAML 파일에 업데이트된 정책을 정의합니다.scopedAccessSettings: - scope: clientScope: restrictedProject: name: projects/PROJECT_NUMBER activeSettings: sessionSettings: sessionLength: 2592000s sessionLengthEnabled: true sessionReauthMethod: LOGIN업데이트된 정책을 적용합니다.
- 범위가 지정된 액세스 설정 바꾸기: 기존 프로젝트 범위에
updated-esl-binding.yaml에 정의된 구성을 덮어쓰려면 다음을 실행하세요.
gcloud access-context-manager cloud-bindings update \ --binding=BINDING_NAME \ --binding-file="updated-esl-binding.yaml"- 기존 설정에 추가:
updated-esl-binding.yaml에 정의된 프로젝트 범위를 바인딩의 기존 프로젝트 범위에 덮어쓰지 않고 추가하려면--append플래그를 전달합니다.
gcloud access-context-manager cloud-bindings update \ --binding=BINDING_NAME \ --binding-file="updated-esl-binding.yaml" \ --append- 범위가 지정된 액세스 설정 바꾸기: 기존 프로젝트 범위에
다음을 바꿉니다.
* BINDING_NAME: 바인딩의 전체 리소스 이름입니다 (예: organizations/123456789012/gcpUserAccessBindings/b1234567890).
* PROJECT_NUMBER: 타겟 Looker (Google Cloud 핵심 서비스) 인스턴스를 소유한 프로젝트 번호입니다.
* sessionLength: 업데이트된 세션 시간입니다 (예: 30일의 경우 2592000s).
REST API
PATCH 요청을 보내 바인딩을 업데이트합니다.
- 범위가 지정된 액세스 설정 바꾸기: 기존 프로젝트 범위를 덮어쓰려면 다음 단계를 따르세요.
PATCH https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings/BINDING_ID?updateMask=scopedAccessSettings
- 기존 설정에 추가: 기존 프로젝트 범위를 덮어쓰지 않고 새 프로젝트 범위를 추가하려면
append=true쿼리 매개변수를 설정합니다.
PATCH https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings/BINDING_ID?updateMask=scopedAccessSettings&append=true
JSON 요청 본문:
{
"scopedAccessSettings": [
{
"scope": {
"clientScope": {
"restrictedProject": {
"name": "projects/PROJECT_NUMBER"
}
}
},
"activeSettings": {
"sessionSettings": {
"sessionLength": "2592000s",
"sessionLengthEnabled": true,
"sessionReauthMethod": "LOGIN"
}
}
}
]
}
다음으로 바꿉니다.
* ORG_ID: Google Cloud 조직 ID (예: 123456789012)
* BINDING_ID: 액세스 바인딩 ID (예: b1234567890)
* PROJECT_NUMBER: 대상 Looker (Google Cloud 핵심 서비스) 인스턴스를 소유한 프로젝트 번호
* sessionLength: 업데이트된 세션 시간입니다 (예: 30일의 경우 2592000s).
액세스 바인딩 삭제
직원 풀 액세스 바인딩을 삭제하면 조직의 모든 직원 풀에 대해 연장된 세션 길이가 사용 중지됩니다.
gcloud
gcloud access-context-manager cloud-bindings delete \
--binding=BINDING_NAME
BINDING_NAME을 바인딩의 전체 리소스 이름으로 바꿉니다.
REST API
DELETE 요청을 보내 바인딩을 삭제합니다.
DELETE https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings/BINDING_ID
다음을 바꿉니다.
ORG_ID: Google Cloud 조직 ID입니다.BINDING_ID: 삭제할 액세스 바인딩의 ID입니다.