직원 ID 제휴의 확장 세션 길이 구성

기본적으로 직원 ID 제휴 세션의 최대 기간은 12시간입니다. 확장된 세션 길이를 사용하면 조직에서 Looker (Google Cloud 핵심 서비스) 및 Gemini Enterprise 모바일 앱에 대해 최대 90일의 장기 세션을 구성할 수 있습니다.

  • Looker (Google Cloud 핵심 서비스): 프로젝트 범위 (restricted_project)를 사용하여 구성됩니다. 확장된 세션을 사용하면 직원 사용자가 외부 ID 공급업체 (IdP)에 대해 매일 다시 인증하지 않고도 Looker (Google Cloud 핵심 서비스)에 대한 중단 없는 연결을 유지할 수 있습니다. Looker (Google Cloud 핵심 서비스) 내의 사용자 상호작용은 Looker (Google Cloud 핵심 서비스) 세션 길이 구성에 의거하여 계속 관리됩니다.

  • Gemini Enterprise 모바일 앱: 애플리케이션 범위 (restricted_client_application)를 사용하여 구성됩니다. 확장된 세션을 사용하면 직원 사용자가 외부 ID 공급업체 (IdP)에 대해 매일 다시 인증하지 않고도 Gemini Enterprise 모바일 앱에 대한 중단 없는 연결을 유지할 수 있습니다.

확장된 세션 전반에서 보안을 유지하기 위해 Google Cloud 백그라운드에서 외부 ID 공급업체 (IdP)의 사용자 속성 및 그룹 멤버십을 주기적으로 동기화합니다.

이 문서에서는 프로젝트 범위 컨트롤 (Looker (Google Cloud 핵심 서비스)용) 및 애플리케이션 범위 컨트롤 (Gemini Enterprise 모바일 앱용)과 함께 Access Context Manager API를 사용하여 확장된 세션 정책을 정의하고, 직원 풀 제공업체를 구성하고, 활성 바인딩을 관리하는 방법을 설명합니다.


개요

직원 ID 제휴는 Access Context Manager Google Cloud 액세스 바인딩을 사용하여 확장된 세션 길이를 구성합니다.

  • Google Cloud 액세스 바인딩: 관리자는 조직의 모든 직원 풀에 조직 전체에 적용되는 Access Context Manager를 사용하여 세션 길이 정책을 정의합니다. 정책은 다음 중 하나를 사용하여 최대 90일의 확장된 세션을 부여합니다.

    • 프로젝트 범위 (restricted_project): 지정된 프로젝트의 Looker (Google Cloud 핵심 서비스) 인스턴스에 확장된 세션을 적용합니다.

    • 애플리케이션 범위 (restricted_client_application): Gemini Enterprise 모바일 앱에 확장된 세션을 적용합니다.

  • 백그라운드 속성 동기화:

    • OIDC: offline_access 범위의 OIDC 승인 코드 플로우 (갱신 토큰을 사용하여 백그라운드에서 외부 IdP의 사용자 속성 및 그룹 멤버십을 주기적으로 갱신) 또는 SCIM 프로비저닝을 사용하여 지원됩니다.

    • SAML: SAML 제공업체의 경우 SCIM 프로비저닝을 사용하여 사용자 속성 및 그룹 멤버십을 최신 상태로 유지합니다.

  • 비활성 보호: 24시간 이내에 외부 IdP에서 사용자 속성을 갱신할 수 없는 경우 (예: 사용자가 프로비저닝 해제되거나 IdP에서 사용자 인증 정보가 취소된 경우) Google Cloud 세션을 종료합니다.


시작하기 전에

확장된 세션 길이를 구성하기 전에 필요한 Identity and Access Management 권한과 API가 사용 설정되어 있는지 확인하세요.

필수 역할 및 권한

확장된 세션 길이를 구성하는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.

API 사용 설정

프로젝트에서 Access Context Manager 및 IAM API를 사용 설정합니다.

gcloud services enable \
    accesscontextmanager.googleapis.com \
    iam.googleapis.com

제한사항 및 요구사항

확장된 세션 길이를 구성하기 전에 다음 요구사항 및 제한사항을 검토하세요.

  • 지원되는 애플리케이션: 확장된 세션 길이는 다음에만 적용됩니다.
    • Looker (Google Cloud 핵심 서비스) (프로젝트 범위를 사용하여 구성)
    • Gemini Enterprise 모바일 앱 (애플리케이션 범위를 사용하여 구성)
  • Gemini Enterprise 모바일 앱의 허용 목록 요구사항: Gemini Enterprise 모바일 앱의 확장된 세션 길이는 허용 목록을 통해서만 사용할 수 있습니다. 미리보기 중에 허용 목록에 대한 액세스를 요청하려면 Google Cloud 지원 담당자 (POC)에게 문의하세요.
  • 범위 유형: 다음 클라이언트 범위 중 하나를 사용하여 scopedAccessSettings 내에서 세션 설정을 구성해야 합니다.
    • 프로젝트 범위 (restricted_project): Looker (Google Cloud 핵심 서비스) 인스턴스를 소유한 프로젝트 (projects/{PROJECT_NUMBER})를 지정합니다. Google Cloud 지정된 프로젝트가 소유한 Looker (Google Cloud 핵심 서비스) 인스턴스만 영향을 받습니다.
    • 애플리케이션 범위 (restricted_client_application): 정식 표시 name 으로 애플리케이션을 지정합니다.
    • Gemini Enterprise 모바일 앱의 애플리케이션 범위를 구성하려면 다음 정확한 애플리케이션 이름 중 하나 또는 둘 다를 명시적으로 사용해야 합니다.
      • "Gemini Enterprise mobile Android"
      • "Gemini Enterprise mobile IOS"
    • OAuth 클라이언트 ID (clientId)로 범위 지정은 직원 ID 제휴 바인딩에 지원되지 않으며 거부됩니다. name 필드를 사용하여 애플리케이션을 식별해야 합니다.
  • 세션 시간 범위: 세션 시간은 최소 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 바인딩 및 restricted_client_application 바인딩에 지원되지 않습니다.
  • 지원되는 ID 공급업체:
    • OIDC: 갱신 토큰을 발급하도록 승인 코드 플로우 및 offline_access 범위로 구성되거나 SCIM 프로비저닝 으로 구성된 OIDC 제공업체가 필요합니다.
    • SAML 2.0: 직원 풀 제공업체에서 SCIM 프로비저닝 을 사용 설정해야 합니다.
  • 속성 비활성 기준: 고정된 24시간 비활성 기준이 적용됩니다. Google Cloud 24시간 이내에 IdP에서 사용자 속성을 갱신할 수 없는 경우 세션이 무효화되고 사용자가 다시 인증해야 합니다.
  • Access Context Manager 제약조건:
    • 단일 조직 바인딩: 직원 풀의 확장된 세션 길이 바인딩은 조직의 '모든 직원 풀' 주 구성원 (principalSet://cloudresourcemanager.googleapis.com/organizations/{ORG_ID}/type/WorkforcePool)을 타겟팅해야 합니다. 이 제휴 주 구성원 식별자는 조직의 모든 직원 풀에 조직 전체에 적용되므로 조직당 이러한 바인딩이 하나만 있을 수 있습니다. 여러 Looker (Google Cloud 핵심 서비스) 프로젝트, Gemini Enterprise 모바일 앱 또는 둘 다의 조합에 대해 확장된 세션을 구성하려면 단일 바인딩의 scopedAccessSettings 목록 내에 여러 restricted_project 및 restricted_client_application 범위 블록을 포함합니다.
    • 액세스 수준 (access_levels, dry_run_access_levels)은 직원 풀 바인딩에서 지원되지 않습니다.
    • 최상위 sessionSettings는 직원 풀 바인딩의 GcpUserAccessBinding에서 직접 지원되지 않습니다. 설정은 scopedAccessSettings.activeSettings.sessionSettings 내에서 정의해야 합니다.

직원 풀 제공업체 구성

확장된 세션 길이를 허용하려면 백그라운드 속성 갱신을 지원하도록 직원 풀 제공업체를 구성해야 합니다. 공급업체가 OIDC 또는 SAML 프로토콜을 사용하도록 구성할 수 있습니다.

OIDC 제공업체 구성

OIDC 제공업체의 백그라운드 속성 갱신은 갱신 토큰 (offline_access 범위) 또는 SCIM 프로비저닝을 사용하여 처리할 수 있습니다. 토큰 기반 속성 갱신을 사용하는 경우 다음 단계를 따르세요.

  1. 외부 IdP에서 승인 코드 플로우 로 OIDC 애플리케이션을 구성하고 갱신 토큰이 반환되도록 오프라인 액세스 를 사용 설정합니다.
  2. 에서 Google CloudOIDC 직원 풀 제공업체의 추가 범위에 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 프로비저닝이 필요합니다.

  1. 직원 풀 제공업체의 SCIM 테넌트를 설정합니다.
  2. 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으로 설정하거나 설정 해제합니다.

Gemini Enterprise 모바일 앱의 정책 구성 예

확장된 세션 길이 정책을 조직의 직원 풀에 할당하고 restricted_client_application 범위를 사용하여 Gemini Enterprise 모바일 앱으로 정책 범위를 지정하는 GcpUserAccessBinding 리소스를 만듭니다. 정확한 정식 표시 이름("Gemini Enterprise mobile Android" 및 "Gemini Enterprise mobile IOS")을 사용하여 애플리케이션을 식별해야 합니다.

gcloud

esl-app-binding.yaml이라는 YAML 파일에서 정책을 정의합니다.

scopedAccessSettings:
- scope:
    clientScope:
      restrictedClientApplication:
        name: "Gemini Enterprise mobile Android"
  activeSettings:
    sessionSettings:
      sessionLength: 7776000s
      sessionLengthEnabled: true
      sessionReauthMethod: LOGIN
- scope:
    clientScope:
      restrictedClientApplication:
        name: "Gemini Enterprise mobile IOS"
  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-app-binding.yaml"

다음을 바꿉니다.

  • ORG_ID: Google Cloud 조직 ID (예: 123456789012).
  • name: "Gemini Enterprise mobile Android" 또는 "Gemini Enterprise mobile IOS"여야 합니다. OAuth 클라이언트 ID (clientId)로 애플리케이션을 식별하는 것은 직원 풀에 지원되지 않습니다.
  • sessionLength: 세션 시간(초) 다음에 s가 옵니다(3600s에서 7776000s 사이).
  • 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": {
          "restrictedClientApplication": {
            "name": "Gemini Enterprise mobile Android"
          }
        }
      },
      "activeSettings": {
        "sessionSettings": {
          "sessionLength": "7776000s",
          "sessionLengthEnabled": true,
          "sessionReauthMethod": "LOGIN"
        }
      }
    },
    {
      "scope": {
        "clientScope": {
          "restrictedClientApplication": {
            "name": "Gemini Enterprise mobile IOS"
          }
        }
      },
      "activeSettings": {
        "sessionSettings": {
          "sessionLength": "7776000s",
          "sessionLengthEnabled": true,
          "sessionReauthMethod": "LOGIN"
        }
      }
    }
  ]
}

다음을 바꿉니다.

  • ORG_ID: Google Cloud 조직 ID (예: 123456789012).
  • name: "Gemini Enterprise mobile Android" 또는 "Gemini Enterprise mobile IOS"여야 합니다. OAuth 클라이언트 ID (clientId)로 애플리케이션을 식별하는 것은 직원 풀에 지원되지 않습니다.
  • 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

  1. updated-esl-binding.yaml이라는 YAML 파일에서 업데이트된 정책을 정의합니다.

    scopedAccessSettings:
    - scope:
        clientScope:
          restrictedProject:
            name: projects/PROJECT_NUMBER
      activeSettings:
        sessionSettings:
          sessionLength: 2592000s
          sessionLengthEnabled: true
          sessionReauthMethod: LOGIN
    
  2. 업데이트된 정책을 적용합니다.

    • 범위 지정된 액세스 설정 바꾸기: 기존 범위를 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.