IAP 재인증

IAP 재인증을 사용하면 서비스 및 애플리케이션 소유자 또는 Google Cloud 관리자는 인증된 최종 사용자가 IAP로 보호되는 서비스 또는 애플리케이션에 액세스할 때 지정된 시간이 지난 후 재인증하도록 요구할 수 있습니다. IAP 보호 서비스 또는 애플리케이션에 다시 인증을 요청하기 전에 사용자가 액세스할 수 있는 기간을 제한합니다.

IAP 재인증은 IAP 보호 서비스 및 애플리케이션에 대한 재인증 정책을 시행하도록 설계되었습니다. 기밀 정보를 처리하는 중요 서비스 및 애플리케이션에 대해 이 작업을 수행할 수 있습니다. 예를 들어 중요한 HR 애플리케이션에 액세스하는 사용자가 2단계를 사용하여 매시간 재인증하도록 지정할 수 있습니다.

지원되는 재인증 방법

다음 방법에 따라 재인증 설정을 관리할 수 있습니다.

  • 로그인: IAP가 보호된 애플리케이션의 재인증을 강제로 시행하며 사용자는 다시 로그인해야 합니다.
  • 보안 키: 최종 사용자는 구성된 보안 키 기반 2단계 인증을 사용하여 다시 인증해야 합니다.
  • 등록된 2단계: 최종 사용자는 등록된 2단계 인증 방법 중 하나를 사용하여 다시 인증해야 합니다.

자세한 내용은 IapSettings를 참조하세요.

재인증 정책 설정

reauthSettingsIapSettings의 일부이므로 리소스 계층 구조의 모든 리소스 유형에 설정될 수 있습니다. 조직, 폴더, 프로젝트 또는 서비스 수준에서 서비스 또는 애플리케이션에 reauthSettings를 설정하여 제한사항을 적용할 수 있습니다. 예를 들어 조직의 모든 애플리케이션 또는 특정 애플리케이션에 대해 세션 길이를 최대 1시간으로 제한할 수 있습니다.

재인증을 설정하는 데 사용할 수 있는 정책 유형에는 두 가지가 있습니다.

  • 최소: 정책 유형이 리소스(예: 조직)에서 MINIMUM로 설정된 경우 하위 수준 리소스(예: 폴더)에서 재인증 설정을 평가할 때 두 설정이 병합됩니다. 하위 수준 리소스에 재인증 설정이 없으면 병합 결과는 상위 수준 리소스의 비어 있지 않은 설정입니다. 그렇지 않으면 병합 시 더 짧은 세션 시간과 두 리소스 간 우선순위가 높은 재인증 메서드가 사용됩니다. 정책 유형은 항상 MINIMUM입니다. 병합된 재인증 설정은 다음 하위 수준 리소스(예: 프로젝트) 재인증 설정과 병합하는 데 사용됩니다.

    지원되는 메서드 세 개(가장 높은 것에서 가장 낮은 것)의 우선순위는 Secure key, Enrolled second factors, Login입니다.

  • 기본값: 정책 유형이 리소스(예: 조직)에서 DEFAULT로 설정된 경우 하위 수준 리소스(예: 폴더)에서 재인증 설정을 평가할 때 구성된 경우 하위 수준 리소스 설정이 사용됩니다. 그렇지 않으면 상위 수준의 리소스 재인증 설정이 적용됩니다.

두 정책 유형 모두 평가 프로세스가 반복되어 대상 서비스 또는 애플리케이션의 reauthSettings가 결정됩니다. 다음 예시에서는 평가 전후의 설정을 보여줍니다. 평가 중에 폴더와 조직 reauthSettings가 병합되어 폴더의 정책 유형이 MINIMUM로 변경됩니다. 그런 후 병합된 설정을 사용하여 서비스 또는 애플리케이션 reauthSettings와 병합합니다.

조직 IapSettings:

accessSettings:
  reauthSettings:
    method: "ENROLLED_SECOND_FACTORS"
    maxAge: "3600s"
    policyType: "MINIMUM"

폴더 IapSettings:

accessSettings:
  reauthSettings:
    method: "LOGIN"
    maxAge: "1200s"
    policyType: "DEFAULT"

서비스 또는 애플리케이션 IapSettings:

accessSettings:
  reauthSettings:
    method: "SECURE_KEY"
    maxAge: "7200s"
    policyType: "DEFAULT"

병합 후 설정:

조직 IapSettings:

accessSettings:
  reauthSettings:
    method: "ENROLLED_SECOND_FACTORS"
    maxAge: "3600s"
    policyType: "MINIMUM"

폴더 IapSettings:

accessSettings:
  reauthSettings:
    method: "ENROLLED_SECOND_FACTORS"
    maxAge: "1200s"
    policyType: "MINIMUM"

서비스 또는 애플리케이션 IapSettings:

accessSettings:
  reauthSettings:
    method: "SECURE_KEY"
    maxAge: "1200s"
    policyType: "MINIMUM"

이 예시에서는 모든 리소스의 정책 유형이 DEFAULT로 설정된 경우 서비스 또는 애플리케이션의 reauthSettings가 사용됩니다.

MaxAge

MaxAge 매개변수를 사용해서 최종 사용자가 재인증해야 하는 빈도(초)를 지정합니다. 예를 들어 1시간 재인증 정책을 설정하려면 다음 예시에 표시된 것처럼 3,600초로 설정합니다.

accessSettings:
  reauthSettings:
    method: "LOGIN"
    maxAge: "3600s"
    policyType: "MINIMUM"

maxAge의 최솟값은 5분입니다.

재인증 정책을 설정하려면 다음 단계를 완료하세요.

Console

  1. Identity-Aware Proxy 페이지로 이동합니다.
    Identity-Aware Proxy 페이지로 이동
  2. 프로젝트를 선택한 다음 재인증 정책을 설정할 리소스를 선택합니다.

  3. 리소스의 설정을 열고 재인증 정책에서 재인증 구성을 선택합니다.

  4. 재인증 설정을 지정한 다음 저장을 클릭합니다.

gcloud

조직, 프로젝트 및 폴더 수준에서 리소스와 서비스에 대한 재인증 정책을 설정할 수 있습니다. 다음은 재인증 정책을 설정하는 몇 가지 명령어 예시입니다.

자세한 내용은 gcloud iap settings set를 참조하세요.

다음 명령어를 실행합니다.

gcloud iap settings set SETTING_FILE [--organization=ORGANIZATION --folder=FOLDER --project=/PROJECT --resource-type=RESOURCE_TYPE --service=SERVICE --version=VERSION

조직 내의 리소스에 재인증 정책을 설정하려면 다음 명령어를 실행합니다.

gcloud iap settings set SETTING_FILE --organization=ORGANIZATION

폴더 내의 리소스에 재인증 정책을 설정하려면 다음 명령어를 실행합니다.

gcloud iap settings set SETTING_FILE --folder=FOLDER

프로젝트 내의 모든 웹 유형 리소스에 재인증 정책을 설정하려면 다음 명령어를 실행합니다.

gcloud iap settings set SETTING_FILE --project=PROJECT --resource-type=iap_web

프로젝트 내 App Engine 서비스에 재인증 정책을 설정하려면 다음 명령어를 실행합니다.

gcloud iap settings set SETTING_FILE --project=PROJECT --resource-type=app-engine --service=SERVICE

여기서 SETTING_FILE은 다음과 같습니다.

accessSettings:
  reauthSettings:
    method: "LOGIN"
    maxAge: "3600s"
    policyType: "MINIMUM"

다음을 바꿉니다.

  • FOLDER: 폴더 ID
  • ORGANIZATION: 조직 ID
  • PROJECT: 프로젝트 ID
  • RESOURCE_TYPE: IAP 리소스 유형. app-engine, iap_web, compute, organization, folder이어야 합니다.
  • SERVICE: 서비스 이름. resource-typecompute 또는 app-engine인 경우 선택사항입니다.
  • VERSION: 버전 이름. compute에는 적용되지 않으며 resource-typeapp-engine인 경우 선택사항입니다.

API

다음 명령어를 실행하여 iap_settings.json 파일을 준비합니다. 필요에 따라 값을 업데이트합니다.

cat << EOF > iap_settings.json
{
  "access_settings": {
      "reauth_settings": {
            "method": "LOGIN",
            "maxAge": "300s",
            "policy_type": "DEFAULT"
        }
    }
}
EOF

gcloud iap settings get 명령어를 실행하여 리소스 이름을 가져옵니다. 출력에서 이름 필드를 복사합니다. 다음 단계에서 이름이 필요합니다.

gcloud iap settings get [--organization=ORGANIZATION --folder=FOLDER --project=/PROJECT --resource-type=RESOURCE_TYPE --service=SERVICE --version=VERSION]

다음 명령어의 RESOURCE_NAME을 이전 단계의 이름으로 바꿉니다. IapSettings가 업데이트됩니다.

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d @iap_settings.json \
"https://iap.googleapis.com/v1/RESOURCE_NAME:iapSettings?updateMask=iapSettings.accessSettings.reauthSettings"

재인증 사용자 인증 정보 이해

재인증에 성공하면 IAP가 최종 사용자의 브라우저에 쿠키를 만듭니다. 유사한 앱을 사용할 때 사용자가 너무 자주 재인증을 수행하지 않도록 방지하기 위해 최상위 비공개 도메인에 쿠키가 설정되며, 전체 비공개 수준 도메인에 대해 유효합니다.

예를 들어 foo.example.com은 IAP 보호 리소스이며 IAP 재인증 정책이 있습니다. 재인증이 성공하면 IAP는 최상위 수준 비공개 도메인인 example.com에 쿠키를 설정합니다. 동일한 최상위 비공개 도메인(예: bar.example.com)의 앱은 동일한 재인증 사용자 인증 정보를 사용하며, 사용자 인증 정보가 유효한 한 사용자에게 다시 인증하라는 메시지를 표시하지 않습니다.

myapp.appspot.com과 같은 URL의 경우 appspot.com은 공개 도메인이므로 최상위 비공개 도메인은 myapp.appspot.com입니다.

알려진 제한사항

  • 재인증은 브라우저 흐름에 대해서만 지원됩니다. 프로그래매틱 사용자 계정 액세스는 지원되지 않습니다. 예를 들어 모바일 및 데스크톱 앱은 재인증이 필요한 리소스에 액세스할 수 없기 때문에 사용자를 재인증할 수 있는 방법이 없습니다.
  • 서비스 계정과 IAP-TCP는 재인증 요구사항에서 제외됩니다.
  • allUsers IAM 구성원 유형에서는 재인증이 작동하지 않습니다.
  • Identity Platform을 통한 외부 ID는 재인증이 필요한 리소스에 액세스할 수 없기 때문에 재인증이 지원되지 않습니다.