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

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

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

  • 권한이 있는 사용자의 재인증 빈도 강제 프로젝트 소유자, 결제 관리자와 같이 승격된 권한이 있는 사용자가 더 자주 재인증하도록 요구합니다.
  • 특정 애플리케이션의 세션 길이 더 길게 구성 Gemini와 같은 컨텍스트 기반 AI 애플리케이션이 최적의 성능에 필요한 큰 컨텍스트 윈도우를 유지할 수 있도록 세션 지속 시간을 더 길게 허용합니다.

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

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

gcloud

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

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

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

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

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

API

GcpUserAccessBinding 바인딩을 생성하거나 업데이트하기 위해 POST 요청의 JSON 본문에서 sessionSettings object 내에 sessionLengthsessionReauthMethod 필드를 정의합니다. 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시간 재인증 요구사항을 설정합니다.

특정 앱을 세션 제어에서 제외하려면 sessionLength 필드를 0s 또는 sessionLengthEnabled~false로 설정합니다. 그러면 sessionReauthMethod 메서드가 무시됩니다.

gcloud

설정 구성:

scopedAccessSettings:
  scope:
    clientScope:
      restrictedClientApplication:
        clientId: SENSITIVE_APP_ID
  activeSettings:
    sessionSettings:
      sessionLength: 7200s
      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