재인증을 위한 세션 제어 구성

세션 제어를 사용하면 사용자가 액세스 권한을 부여받은 후 재인증해야 하는 빈도와 전체 로그인, 비밀번호 전용 또는 하드웨어 보안 키가 필요한지 여부를 구성할 수 있습니다.

세션 제어를 적용하여 다음을 수행할 수 있습니다.

  • 권한이 있는 사용자에 대한 빈번한 재인증 시행 프로젝트 소유자, 결제 관리자와 같이 승격된 권한이 있는 사용자는 더 자주 재인증해야 합니다.
  • 특정 애플리케이션에 더 긴 세션 구성 Gemini와 같은 컨텍스트 기반 AI 애플리케이션과 같은 특정 애플리케이션의 세션 시간을 더 길게 하여 최적의 성능에 필요한 큰 컨텍스트 창을 보존할 수 있습니다.

세션 길이와 재인증 방법 정의

Access Context Manager 바인딩을 만들 때 세션 제어를 정의할 수 있습니다. 세션 제어에 관한 자세한 내용은 액세스 바인딩을 사용하여 사용자 그룹에 정책 적용을 참고하세요.

gcloud

  • 모든 애플리케이션에 기본 세션 제어 설정하기

    --session-length 플래그를 사용하여 세션 기간을 설정하고 --session-reauth-method 플래그를 사용하여 재인증 방법을 지정합니다. 예를 들어 세션 시간은 30분 (30m)으로, 재인증 방법은 LOGIN, PASSWORD 또는 SECURITY_KEY로 설정할 수 있습니다.

    이는 애플리케이션별 설정에 의해 재정의되지 않는 한 모든 애플리케이션에 적용됩니다.

  • 애플리케이션별 세션 제어 설정하기

    YAML 파일에서 scopedAccessSettings를 정의하여 clientId를 사용하여 특정 애플리케이션의 세션 제어를 지정합니다. 이렇게 하면 이러한 애플리케이션의 기본 세션 제어를 재정의할 수 있습니다. 그런 다음 --binding-file flag를 사용하여 YAML 파일을 전달할 수 있습니다.

API

POST 요청의 JSON 본문에서 sessionSettings object 내의 sessionLengthsessionReauthMethod 필드를 정의하여 GcpUserAccessBinding 바인딩을 만들거나 업데이트합니다. scopedAccessSettings를 사용하여 애플리케이션별 세션 컨트롤을 정의합니다. 자세한 내용은 특정 애플리케이션의 구성 정의를 참고하세요.

세션 제어를 정의할 때 고려해야 할 주요 사항은 다음과 같습니다.

  • clientId를 사용하여 Google Cloud 콘솔을 지정할 수 없습니다. Google Cloud 콘솔에 세션 제어를 적용하려면 기본값으로 정의한 다음 다른 애플리케이션에 대한 예외를 만듭니다.
  • 세션 제어 설정을 확인할 때는 요청과 일치하는 가장 최근에 생성된 액세스 결합만 사용됩니다.

정책 구성 예시

다음은 기본적으로 LOGIN를 사용하여 18시간마다 재인증이 필요하고 SECURITY_KEY를 사용하여 특정 애플리케이션 (SENSITIVE_APP_ID)의 경우 2시간마다 재인증이 필요한 세션 제어를 만드는 방법을 보여주는 예입니다.

기본 설정

Google Cloud CLI 명령어의 --level, --session-length, --session-reauth-method 플래그 (또는 API 호출의 JSON 본문에서 상응하는 필드)는 scopedAccessSettings에 명시적으로 정의되지 않은 모든 애플리케이션의 기본 동작을 설정합니다.

애플리케이션별 설정

YAML 파일 (또는 JSON 본문)의 scopedAccessSettings 섹션을 사용하면 특정 애플리케이션의 기본 설정을 재정의할 수 있습니다. 이 예에서는 클라이언트 ID가 SENSITIVE_APP_ID인 애플리케이션에 SECURITY_KEY를 사용하여 2시간 재인증 요구사항을 설정했습니다.

gcloud

설정 구성:

scopedAccessSettings:
  - scope:
      clientScope:
        restrictedClientApplication:
          clientId: SENSITIVE_APP_ID
    activeSettings:
      accessLevels:
        - accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
      sessionSettings:
        - sessionLength: 2h
          sessionReauthMethod: SECURITY_KEY
          sessionLengthEnabled: true

액세스 바인딩을 만듭니다.

gcloud access-context-manager cloud-bindings create \
    --organization ORG_ID \
    --group-key GROUP_ID \
    --binding-file BINDING_FILE_PATH \
    --level DEFAULT_ACCESS_LEVEL  
    --session-length 18h \
    --session-reauth-method LOGIN

API

JSON 본문:

{
  "groupKey": "GROUP_ID",
  "accessLevels": [
    "accessPolicies/POLICY_ID/accessLevels/DEFAULT_ACCESS_LEVEL"
  ],
  "scopedAccessSettings": [
    {
      "scope": {
        "clientScope": {
          "restrictedClientApplication": {
            "clientId": "SENSITIVE_APP_ID"
          }
        }
      },
      "activeSettings": {
        "accessLevels": [
          "accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME"
        ],
        "sessionSettings": [
          {
            "sessionLength": "2h",
            "sessionReauthMethod": "SECURITY_KEY",
            "sessionLengthEnabled": true
          }
        ]
      }
    }
  ]

게시 요청:

POST https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings