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

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

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

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

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

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

gcloud

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

    --session-length 플래그를 사용하여 세션 기간을 설정합니다. 값의 범위는 0~24시간입니다. ISO 8601 기간 형식을 사용하여 기간을 지정합니다. 예를 들어 '12H30M5S'를 사용하여 12시간 30분 5초 길이의 세션을 설정합니다. --session-reauth-method 플래그를 사용하여 재인증 방법을 지정합니다. 예를 들어 세션 기간을 30분 (30m)으로 설정하고 LOGIN, PASSWORD 또는 SECURITY_KEY 재인증 방법을 설정할 수 있습니다.

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

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

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

API

POST 요청의 JSON 본문에서 sessionSettings 객체 내에 sessionLengthsessionReauthMethod 필드를 정의하여 GcpUserAccessBinding 바인딩을 생성하거나 업데이트합니다.

  • sessionLength은 0~24시간 사이의 세션 길이입니다. 값은 문자열이어야 하며 0~86400 사이의 정수와 그 뒤에 바로 's' 문자로 구성되어야 합니다.
  • sessionReauthMethodLOGIN, PASSWORD 또는 SECURITY_KEY일 수 있습니다.
  • scopedAccessSettings을 사용하여 애플리케이션별 세션 컨트롤을 정의합니다. 자세한 내용은 특정 애플리케이션의 구성 정의를 참고하세요.

Terraform

Terraform Google Cloud 사용자 액세스 바인딩 리소스 내에서 session_settings 인수를 채워 모든 사용자 트래픽에 적용되는 일반 세션 길이 제어를 구성합니다.

  • session_length: 세션 시간(초)입니다. 예를 들어 900초는 세션 길이를 15분으로 설정합니다. 끝에 있는 's'는 필수입니다.
  • session_length_enabled: 지정된 세션 설정을 사용 중지하려면 false로 설정합니다.
  • session_reauth_method: 사용자 인증 정보를 새로고침하는 데 사용되는 인증 챌린지 유형입니다. 옵션은 LOGIN, PASSWORD 또는 SECURITY_KEY입니다.
  • use_oidc_max_age: 인증 사용자 인증 정보가 OAuth 토큰인 경우 지정되는 선택적 OIDC 최대 기간 매개변수를 세션에서 따를지 여부를 구성하는 데 사용되는 고급 필드입니다.

세션 제어를 정의할 때 고려해야 할 주요 사항:

  • 세션 제어 설정을 해결할 때는 요청과 일치하는 가장 최근에 생성된 액세스 바인딩만 사용됩니다.

정책 구성 예시

다음 예시에서는 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

Terraform

모든 앱에서 '그룹 키'를 통해 액세스하는 사용자의 액세스 요청에 대한 세션 길이를 지정하려면 다음 단계를 따르세요.

    resource "google_access_context_manager_gcp_user_access_binding" "gcp_user_access_binding" {
      organization_id = "{Organization ID}"
      group_key = "{Group Key}"
      session_settings {
        session_length = "1800s"
        session_length_enabled = true
        session_reauth_method = "LOGIN"
        use_oidc_max_age = false
      }

Google Cloud 콘솔과 같은 특정 앱을 사용하여 특정 Google 그룹에서 온 사용자의 요청에 대한 세션 길이를 지정하려면 active_settings에서 적절한 scoped_access_settings 인수를 session_settings 인수와 함께 채우세요. session_settings 내의 하위 인수는 최상위 인수와 동일합니다.

    resource "google_access_context_manager_gcp_user_access_binding" "gcp_user_access_binding" {
      organization_id = "{Organization ID}"
      group_key = "{Group Key}"
      scoped_access_settings {
        scope {
          client_scope {
            restricted_client_application {
              name = "Cloud Console"
            }
          }
        }
        active_settings {
          session_settings {
            session_length = "1800s"
            session_length_enabled = true
            session_reauth_method = "LOGIN"
            use_oidc_max_age = false
          }
        }
      }
    }