재인증을 위한 세션 컨트롤 구성

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

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

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

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

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

gcloud

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

    --session-length 플래그를 사용하여 세션 시간을 설정합니다. 값은 0s 또는 1시간에서 24시간 사이여야 합니다. 시간 단위로 기간을 지정합니다. 예를 들어 '12h'를 사용하여 세션 시간을 12시간으로 설정합니다. --session-reauth-method 플래그를 사용하여 재인증 방법을 지정합니다. 예를 들어 세션 시간을 3시간 (3h)으로 설정하고 LOGIN, PASSWORD 또는 SECURITY_KEY 재인증 방법을 설정할 수 있습니다.

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

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

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

REST API

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

  • sessionLength는 세션 시간(초)입니다. 값은 0s 또는 1시간에서 24시간 사이여야 하며, 초 단위로 지정한 후 s를 추가합니다 (예: 3600s, 1시간 세션 길이에 해당).
  • sessionReauthMethodLOGIN, PASSWORD 또는 SECURITY_KEY일 수 있습니다.
  • scopedAccessSettings를 사용하여 애플리케이션별 세션 제어를 정의합니다. 자세한 내용은 특정 애플리케이션의 구성 정의를 참조하세요.

Terraform

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

  • session_length: 세션 시간(초)입니다. 예를 들어 3600s는 세션 길이를 1시간으로 설정합니다. 끝에 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로 설정하거나 sessionLengthEnabledfalse로 설정합니다. 그러면 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=SESSION_LENGTH \
    --session-reauth-method LOGIN

다음을 바꿉니다.

  • ORG_ID: 조직의 ID
  • GROUP_ID: 그룹 키
  • BINDING_FILE_PATH: 바인딩 파일의 경로
  • DEFAULT_ACCESS_LEVEL: 기본 액세스 수준
  • SESSION_LENGTH: 세션 길이(예: 18h)

REST API

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 요청을 구성합니다.

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

ORG_ID를 조직의 ID로 바꿉니다.

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 = "3600s"
        session_length_enabled = true
        session_reauth_method = "LOGIN"
        use_oidc_max_age = false
      }

console과 같은 특정 앱을 사용하여 특정 Google 그룹에서 오는 사용자의 요청에 대한 세션 길이를 지정하려면 active_settings에서 session_settings 인수로 적절한 scoped_access_settings 인수를 채웁니다. Google Cloud 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 = "3600s"
            session_length_enabled = true
            session_reauth_method = "LOGIN"
            use_oidc_max_age = false
          }
        }
      }
    }

애플리케이션의 정책 구성 예시 Google Cloud

애플리케이션의 애플리케이션별 재인증 제어를 구성할 수 있습니다. 예를 들어 Google Cloud SDK에는 SECURITY_KEY가 필요하고 Google Cloud console에는 LOGIN가 필요합니다. Google Cloud 다음 예시에서는 1시간마다 재인증을 요구하고 SECURITY_KEY를 사용하여 Google Cloud SDK에 대해 4시간마다 재인증을 요구하는 세션 제어를 만드는 방법을 보여줍니다. Google Cloud LOGIN

YAML 파일 (또는 JSON 본문)의 scopedAccessSettings 섹션을 사용하면 특정 애플리케이션의 기본 설정을 재정의할 수 있습니다. 이 예시에서는 name 필드를 사용하여 이러한 애플리케이션을 식별하고 Google Cloud SDK에 대해 SECURITY_KEY를 사용하여 1시간 재인증 요구사항을 설정하고 Google Cloud console에 대해 LOGIN를 사용하여 4시간 재인증 요구사항을 설정합니다.

특정 애플리케이션을 세션 제어에서 제외하려면 sessionLength 필드를 0s로 설정하거나 sessionLengthEnabledfalse로 설정합니다. 그러면 sessionReauthMethod 메서드가 무시됩니다.

gcloud

다음 예시에서는 세션 설정 구성을 보여줍니다.

scopedAccessSettings:
- scope:
    clientScope:
      restrictedClientApplication:
        name: Google Cloud SDK
  activeSettings:
    sessionSettings:
      sessionLength: 3600s
      sessionReauthMethod: SECURITY_KEY
      sessionLengthEnabled: true
- scope:
    clientScope:
      restrictedClientApplication:
        name: Cloud Console
  activeSettings:
    sessionSettings:
      sessionLength: 14400s
      sessionReauthMethod: LOGIN
      sessionLengthEnabled: true

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

gcloud access-context-manager cloud-bindings create \
    --organization=ORG_ID \
    --group-key=GROUP_ID \
    --binding-file=BINDING_FILE_PATH

다음을 바꿉니다.

  • ORG_ID: 조직의 ID
  • GROUP_ID: 그룹 키
  • BINDING_FILE_PATH: 바인딩 파일의 경로

REST API

API 요청의 JSON 본문 예시:

{
  "groupKey": "GROUP_ID",
  "scopedAccessSettings": [
    {
      "scope": {
        "clientScope": {
          "restrictedClientApplication": {
            "name": "Google Cloud SDK"
          }
        }
      },
      "activeSettings": {
        "sessionSettings": {
            "sessionLength": "3600s",
            "sessionReauthMethod": "SECURITY_KEY",
            "sessionLengthEnabled": true
          }
      }
    },
    {
      "scope": {
        "clientScope": {
          "restrictedClientApplication": {
            "name": "Cloud Console"
          }
        }
      },
      "activeSettings": {
        "sessionSettings": {
            "sessionLength": "14400s",
            "sessionReauthMethod": "LOGIN",
            "sessionLengthEnabled": true
          }
      }
    }
  ]
}

다음 형식으로 POST 요청을 구성합니다.

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

ORG_ID를 조직의 ID로 바꿉니다.

Terraform

Google Cloud SDK 및 Google Cloud console의 세션 길이 설정을 지정하려면 적절한 scoped_access_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 = "Google Cloud SDK"
            }
          }
        }
        active_settings {
          session_settings {
            session_length = "3600s"
            session_length_enabled = true
            session_reauth_method = "SECURITY_KEY"
            use_oidc_max_age = false
          }
        }
      }
      scoped_access_settings {
        scope {
          client_scope {
            restricted_client_application {
              name = "Cloud Console"
            }
          }
        }
        active_settings {
          session_settings {
            session_length = "14400s"
            session_length_enabled = true
            session_reauth_method = "LOGIN"
            use_oidc_max_age = false
          }
        }
      }
    }