세션 제어를 사용하면 액세스 권한이 부여된 후 사용자가 재인증해야 하는 빈도와 전체 로그인, 비밀번호만 또는 하드웨어 보안 키가 필요한지 여부를 구성할 수 있습니다.
세션 제어를 적용하여 다음을 수행할 수 있습니다.
- 권한이 있는 사용자의 재인증 빈도 적용: 프로젝트 소유자 및 결제 관리자와 같이 승격된 권한이 있는 사용자에게 더 자주 재인증을 요구합니다.
- 특정 애플리케이션의 세션 길이 구성: 최적의 성능에 필요한 큰 컨텍스트 윈도우를 유지하기 위해 콘솔, Google Cloud SDK 또는 특정 OAuth 앱과 같은 지원되는 애플리케이션의 세션 기간을 더 길게 허용합니다. Google Cloud
세션 길이 및 재인증 방법 정의
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 객체 내에서 sessionLength 및 sessionReauthMethod 필드를 정의하여 GcpUserAccessBinding 바인딩을 만들거나 업데이트합니다.
sessionLength는 세션 시간(초)이며, 초 수 다음에s가 오는 형식으로 지정됩니다(예:3600s). 값은0s또는3600s(1시간)에서86400s(24시간) 사이여야 합니다.0s로 설정된 경우sessionLengthEnabled를false로 설정하거나 설정하지 않은 상태로 두어야 합니다.sessionLength을0s로 설정하고sessionLengthEnabled을true로 설정할 수는 없습니다.sessionReauthMethod는LOGIN,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시간 재인증 요구사항을 설정합니다.
scopedAccessSettings의 애플리케이션별 설정은 기본 (전역) 세션 제어를 완전히 재정의합니다. 애플리케이션에 범위가 지정된 설정이 정의된 경우 기본 세션 제어가 해당 애플리케이션에 적용되지 않습니다.
전역 제어가 활성 상태일 때 특정 애플리케이션을 세션 제어에서 제외하려면 scopedAccessSettings에 명시적으로 추가하고 sessionLength 필드를 0s로, sessionLengthEnabled을 false로 설정해야 합니다.
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 \
--session-length=SESSION_LENGTH \
--session-reauth-method LOGIN
다음을 바꿉니다.
ORG_ID: 조직의 ID Google CloudGROUP_ID: 그룹 키BINDING_FILE_PATH: 바인딩 파일의 경로SESSION_LENGTH: 세션 길이(예:18h)
REST API
API 요청의 JSON 본문 예시:
{
"groupKey": "GROUP_ID",
"sessionSettings": {
"sessionLength": "64800s",
"sessionReauthMethod": "LOGIN",
"sessionLengthEnabled": true
},
"scopedAccessSettings": [
{
"scope": {
"clientScope": {
"restrictedClientApplication": {
"clientId": "SENSITIVE_APP_ID"
}
}
},
"activeSettings": {
"sessionSettings": {
"sessionLength": "7200s",
"sessionReauthMethod": "SECURITY_KEY",
"sessionLengthEnabled": true
}
}
}
]
}
다음 형식으로 POST 요청을 구성합니다.
POST https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings
ORG_ID를 Google Cloud 조직의 ID로 바꿉니다.
Terraform
전역으로 적용되는 세션 제어와 특정 애플리케이션에 적용되는 세션 제어를 지정하려면 session_settings 및 scoped_access_settings 인수를 설정합니다.
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 = "64800s"
session_length_enabled = true
session_reauth_method = "LOGIN"
use_oidc_max_age = false
}
scoped_access_settings {
scope {
client_scope {
restricted_client_application {
client_id = "SENSITIVE_APP_ID"
}
}
}
active_settings {
session_settings {
session_length = "7200s"
session_length_enabled = true
session_reauth_method = "SECURITY_KEY"
use_oidc_max_age = false
}
}
}
}
애플리케이션의 정책 구성 예시 Google Cloud
애플리케이션의 애플리케이션별 재인증 제어를 구성할 수 있습니다. 예를 들어 Google Cloud SDK에는 SECURITY_KEY를, 콘솔에는 LOGIN를 요구할 수 있습니다. Google Cloud Google Cloud 다음 예시에서는
1시간마다 재인증을 요구하고
SECURITY_KEY를 사용하여 Google Cloud SDK에 대해 4시간마다 재인증을 요구하는 세션 제어를 만드는 방법을 보여줍니다. Google Cloud 콘솔에 대해 LOGIN를 사용합니다.
YAML 파일 (또는 JSON 본문)의 scopedAccessSettings 섹션을 사용하면 특정 애플리케이션의 기본 설정을 재정의할 수 있습니다. 이 예시에서는 이러한 애플리케이션을 식별하고 Google Cloud SDK에 대해 SECURITY_KEY를 사용하여 1시간 재인증 요구사항을 설정하고콘솔에 대해 LOGIN를 사용하여 4시간 재인증 요구사항을 설정합니다. Google Cloud name
특정 애플리케이션을 세션 제어에서 제외하려면
sessionLength 필드를 0s로 설정하거나 sessionLengthEnabled
를 false로 설정합니다. 그러면 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 Google CloudGROUP_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를 Google Cloud 조직의 ID로 바꿉니다.
Terraform
Google Cloud SDK 및 Google Cloud 콘솔의 세션 길이 설정을 지정하려면 적절한 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
}
}
}
}
애플리케이션의 기본 16시간 세션 길이 재정의 Google Cloud
2026년 6월부터 일부 Google Cloud 조직에 기본 세션 길이 16시간이 도입되었습니다. 이 기본 정책은 Google 관리 콘솔에 표시되지 않으며 영향을 받는 Google Cloud 조직은 Access Context Manager API를 사용하여 사용자를 위해 재정의해야 합니다.
이 기본 정책을 재정의하고 이러한 애플리케이션을 세션 제어에서 제외 (세션 길이를 사실상 무한대로 만듦)하려면 Google Cloud SDK 및 Google Cloud 콘솔('Cloud Console') 애플리케이션 모두에 대해 sessionLengthEnabled가 false로 설정된 scopedAccessSettings를 사용하여 클라우드 바인딩을 만들면 됩니다.
gcloud
다음 예시에서는 이러한 애플리케이션의 세션 제어를 사용 중지하는 YAML 구성을 보여줍니다.
scopedAccessSettings:
- scope:
clientScope:
restrictedClientApplication:
name: Google Cloud SDK
activeSettings:
sessionSettings:
sessionLength: 0s
sessionReauthMethod: LOGIN
sessionLengthEnabled: false
- scope:
clientScope:
restrictedClientApplication:
name: Cloud Console
activeSettings:
sessionSettings:
sessionLength: 0s
sessionReauthMethod: LOGIN
sessionLengthEnabled: false
이 파일을 사용하여 액세스 바인딩을 만들거나 업데이트합니다.
gcloud access-context-manager cloud-bindings create \
--organization=ORG_ID \
--group-key=GROUP_ID \
--binding-file=BINDING_FILE_PATH
다음을 바꿉니다.
ORG_ID: 조직의 ID Google CloudGROUP_ID: 그룹 키 (예: 이 재정의를 적용하려는 모든 사용자가 포함된 그룹)BINDING_FILE_PATH: 바인딩 파일의 경로
REST API
API 요청의 JSON 본문 예시:
{
"groupKey": "GROUP_ID",
"scopedAccessSettings": [
{
"scope": {
"clientScope": {
"restrictedClientApplication": {
"name": "Google Cloud SDK"
}
}
},
"activeSettings": {
"sessionSettings": {
"sessionLength": "0s",
"sessionReauthMethod": "LOGIN",
"sessionLengthEnabled": false
}
}
},
{
"scope": {
"clientScope": {
"restrictedClientApplication": {
"name": "Cloud Console"
}
}
},
"activeSettings": {
"sessionSettings": {
"sessionLength": "0s",
"sessionReauthMethod": "LOGIN",
"sessionLengthEnabled": false
}
}
}
]
}
다음 형식으로 POST 요청을 구성합니다.
POST https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings
ORG_ID를 Google Cloud 조직의 ID로 바꿉니다.
Terraform
Google Cloud SDK 및 Google Cloud 콘솔의 세션 제어를 사용 중지하도록 지정하려면 적절한 scoped_access_settings 인수를 session_length_enabled = false로 설정합니다.
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 = "0s"
session_length_enabled = false
session_reauth_method = "LOGIN"
use_oidc_max_age = false
}
}
}
scoped_access_settings {
scope {
client_scope {
restricted_client_application {
name = "Cloud Console"
}
}
}
active_settings {
session_settings {
session_length = "0s"
session_length_enabled = false
session_reauth_method = "LOGIN"
use_oidc_max_age = false
}
}
}
}