직원 ID 제휴 구성

이 가이드에서는 OIDC 또는 SAML 2.0을 지원하는 ID 공급업체(IdP)를 통해 직원 ID 제휴를 구성하는 방법을 설명합니다.

IdP별 안내는 다음을 참조하세요.

시작하기 전에

  1. Google Cloud 조직을 설정해야 합니다.

  2. API Identity and Access Management (IAM) and Resource Manager 사용 설정

    API 사용 설정

  3. Google Cloud CLI를 설치한 후 다음 명령어를 실행하여 초기화합니다.

    gcloud init

  4. 로그인 시 IdP에서 서명된 인증 정보를 제공해야 합니다. OIDC IdP는 JWT를 제공해야 하고 SAML IdP 응답에 서명이 되어야 합니다.

  5. 조직 또는 Google Cloud 제품의 변경사항에 대한 중요 정보를 수신하려면 필수 연락처를 제공해야 합니다. 자세한 내용은 직원 ID 제휴 개요를 참조하세요.

필요한 역할

직원 ID 제휴를 구성하는 데 필요한 권한을 얻으려면 관리자에게 조직의 직원 ID 풀 관리자(roles/iam.workforcePoolAdmin) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.

커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

또는 소유자 기본 역할(roles/owner)에도 직원 ID 제휴를 구성하는 권한이 포함됩니다. 프로덕션 환경에서는 기본 역할을 부여하지 말아야 하지만 개발 환경 또는 테스트 환경에서는 부여해도 됩니다.

직원 ID 제휴 구성

직원 ID 제휴를 구성하려면 직원 ID 풀직원 ID 풀 공급업체를 만듭니다.

직원 ID 풀 만들기

풀을 만들려면 다음 명령어를 실행합니다.

콘솔

직원 ID 풀을 만들려면 다음을 수행하세요.

  1. Google Cloud 콘솔에서 직원 ID 풀 페이지로 이동합니다.

    직원 ID 풀로 이동

  2. 풀 만들기를 클릭하고 다음을 수행합니다.

    1. 이름에 풀 이름을 입력합니다. 풀 ID는 입력한 이름에서 자동으로 파생됩니다.

    2. 선택사항: ID를 업데이트하려면 수정을 클릭합니다.

    3. 선택사항: 설명에 풀 설명을 입력합니다.

    4. 세션 시간은 기본값으로 설정됩니다. 사용자설정 세션 시간을 입력하려면 수정을 클릭합니다. 세션 시간은 이 직원 풀에서 유래한 Google Cloud 액세스 토큰, 콘솔(제휴) 로그인 세션, gcloud CLI 로그인 세션이 유효하게 지속되는 시간을 결정합니다. 기간은 15분(900초) 이상, 12시간(43,200초) 미만이어야 합니다. 세션 시간을 설정하지 않은 경우 기본값은 1시간(3,600초)입니다.

    5. 사용 설정 상태의 풀을 만들려면 사용 설정된 풀을 사용 설정합니다.

    6. 직원 ID 풀을 만들려면 다음을 클릭합니다.

gcloud

직원 ID 풀을 만들려면 다음 명령어를 실행합니다.

gcloud iam workforce-pools create WORKFORCE_POOL_ID \
    --organization=ORGANIZATION_ID \
    --description="DESCRIPTION" \
    --session-duration=SESSION_DURATION \
    --location=global

다음을 바꿉니다.

  • WORKFORCE_POOL_ID: Google Cloud 직원 풀을 나타내기 위해 선택하는 ID. ID 형식 지정에 대한 자세한 내용은 API 문서의 쿼리 매개변수 섹션을 참조하세요.
  • ORGANIZATION_ID: Google Cloud 조직의 숫자 조직 ID
  • DESCRIPTION: 직원 ID 풀 설명
  • SESSION_DURATION: 세션 시간으로 이는 직원 풀에서 유래한 Google Cloud 액세스 토큰, 콘솔(제휴) 로그인 세션, gcloud CLI 로그인 세션이 유효하게 지속되는 시간을 결정합니다. 기간은 15분(900초) 이상, 12시간(43,200초) 미만이어야 합니다. 세션 시간을 설정하지 않은 경우 기본값은 1시간(3,600초)입니다.

직원 ID 풀 공급업체 만들기

이 섹션에서는 IdP 사용자가 Google Cloud에 액세스할 수 있도록 직원 ID 풀 공급업체를 만드는 방법을 설명합니다. 공급업체가 OIDC 또는 SAML 프로토콜을 사용하도록 구성할 수 있습니다.

OIDC 직원 풀 공급업체 만들기

OIDC 프로토콜을 사용하여 직원 ID 풀 공급업체를 만들려면 다음을 수행합니다.

  1. OIDC IdP에서 Google Cloud 직원 ID 제휴를 위한 새 애플리케이션을 등록합니다. IdP에서 제공하는 클라이언트 ID와 발급기관 URI를 기록해 두세요. 이 문서에서 사용할 예정입니다.

  2. 콘솔에 대한 사용자 액세스를 설정하려면 OIDC IdP에 다음 리디렉션 URL을 추가합니다.

    https://auth.cloud.google/signin-callback/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
    

    콘솔(제휴) 로그인을 구성하는 방법을 알아보려면 콘솔에 대한 사용자 액세스 설정(제휴)을 참조하세요.

  3. Google Cloud에서 공급업체를 만들려면 다음을 수행합니다.

    콘솔

    코드 흐름

    Google Cloud 콘솔에서 승인 코드 플로우을 사용하는 OIDC 공급업체를 만들려면 다음을 수행합니다.

    1. Google Cloud 콘솔에서 직원 ID 풀 페이지로 이동합니다.

      직원 ID 풀로 이동

    2. 직원 ID 풀 표에서 공급업체를 만들 풀을 선택합니다.

    3. 공급업체 표에서 공급업체 추가를 클릭합니다.

    4. 프로토콜 선택에서 OpenID Connect(OIDC)를 선택합니다.

    5. 풀 공급업체 만들기에서 다음을 수행합니다.

      1. 이름에 공급업체 이름을 입력합니다.
      2. 발급기관(URL)에 발급기관 URI를 입력합니다. OIDC 발급기관 URI는 유효한 URI 형식이어야 하며 https(으)로 시작해야 합니다. 예를 들면 https://example.com/oidc입니다.
      3. OIDC IdP에 등록된 OIDC 클라이언트 ID인 클라이언트 ID를 입력합니다. ID는 IdP에서 발급한 JWT의 aud 클레임과 일치해야 합니다.
      4. 사용 설정 상태의 공급업체를 만들려면 사용 설정된 제공업체를 사용 설정합니다.
      5. 계속을 클릭합니다.
    6. 응답 유형에서 다음을 수행합니다. 응답 유형은 웹 기반 싱글 사인온(SSO) 흐름에만 사용됩니다.

      1. 응답 유형에서 코드를 선택합니다.
      2. 클라이언트 보안 비밀번호에 IdP에서 받은 클라이언트 보안 비밀번호를 입력합니다.
      3. 어설션 클레임 동작에서 다음 중 하나를 선택합니다.

        • 사용자 정보 및 ID 토큰
        • ID 토큰만
      4. 계속을 클릭합니다.

    7. 공급업체 구성에서 속성 매핑 및 속성 조건을 구성할 수 있습니다. 속성 매핑을 만들려면 다음을 수행합니다. IdP 필드 이름이나 문자열을 반환하는 CEL 형식의 표현식을 입력합니다.

      1. 필수: OIDC 1에 IdP에서 확인된 소유자를 입력합니다. 예를 들면 assertion.sub입니다.
      2. 선택사항: 속성 매핑을 더 추가하려면 다음을 수행합니다.

        1. 매핑 추가를 클릭합니다.
        2. Google n에서 n은 숫자이며 Google Cloud 지원 키 중 하나를 입력합니다.
        3. 해당 OIDC n 필드에 매핑할 IdP 관련 필드 이름을 CEL 형식으로 입력합니다.
      3. 속성 조건을 만들려면 다음을 수행합니다.

        1. 조건 추가를 클릭합니다.
        2. 속성 조건에 조건을 CEL 형식으로 입력합니다(예: assertion.role == 'gcp-users'). 이 예시의 조건은 gcp-users 역할 사용자만 이 공급업체를 사용하여 로그인할 수 있도록 합니다.
    8. 공급업체를 만들려면 제출을 클릭합니다.

    암시적 흐름

    Google Cloud 콘솔에서 암시적 흐름을 사용하는 OIDC 공급업체를 만들려면 다음을 수행합니다.

    1. Google Cloud 콘솔에서 직원 ID 풀 페이지로 이동합니다.

      직원 ID 풀로 이동

    2. 직원 ID 풀 표에서 공급업체를 만들 풀을 선택합니다.

    3. 공급업체 표에서 공급업체 추가를 클릭합니다.

    4. 프로토콜 선택에서 OpenID Connect(OIDC)를 선택합니다.

    5. 풀 공급업체 만들기에서 다음을 수행합니다.

      1. 이름에 공급업체 이름을 입력합니다.
      2. 발급기관(URL)에 발급기관 URI를 입력합니다. OIDC 발급기관 URI는 유효한 URI 형식이어야 하며 https(으)로 시작해야 합니다. 예를 들면 https://example.com/oidc입니다.
      3. OIDC IdP에 등록된 OIDC 클라이언트 ID인 클라이언트 ID를 입력합니다. ID는 IdP에서 발급한 JWT의 aud 클레임과 일치해야 합니다.
      4. 사용 설정 상태의 공급업체를 만들려면 사용 설정된 제공업체를 사용 설정합니다.
      5. 계속을 클릭합니다.
    6. 응답 유형에서 다음을 수행합니다. 응답 유형은 웹 기반 싱글 사인온(SSO) 흐름에만 사용됩니다.

      1. 응답 유형에서 ID 토큰을 선택합니다.
      2. 계속을 클릭합니다.
    7. 공급업체 구성에서 속성 매핑 및 속성 조건을 구성할 수 있습니다. 속성 매핑을 만들려면 다음을 수행합니다. IdP 필드 이름이나 문자열을 반환하는 CEL 형식의 표현식을 입력합니다.

      1. 필수: OIDC 1에 IdP에서 확인된 소유자를 입력합니다. 예를 들면 assertion.sub입니다.

      2. 선택사항: 속성 매핑을 더 추가하려면 다음을 수행합니다.

        1. 매핑 추가를 클릭합니다.
        2. Google n에서 n은 숫자이며 Google Cloud 지원 키 중 하나를 입력합니다.
        3. 해당 OIDC n 필드에 매핑할 IdP 관련 필드 이름을 CEL 형식으로 입력합니다.
      3. 속성 조건을 만들려면 다음을 수행합니다.

        1. 조건 추가를 클릭합니다.
        2. 속성 조건에 조건을 CEL 형식으로 입력합니다(예: assertion.role == 'gcp-users'). 이 예시의 조건은 gcp-users 역할 사용자만 이 공급업체를 사용하여 로그인할 수 있도록 합니다.
    8. 공급업체를 만들려면 제출을 클릭합니다.

    gcloud

    코드 흐름

    웹 로그인에 승인 코드 플로우를 사용하는 OIDC 공급업체를 만들려면 다음 명령어를 실행합니다.

    gcloud iam workforce-pools providers create-oidc PROVIDER_ID \
        --workforce-pool=WORKFORCE_POOL_ID \
        --display-name="DISPLAY_NAME" \
        --description="DESCRIPTION" \
        --issuer-uri="ISSUER_URI" \
        --client-id="OIDC_CLIENT_ID" \
    --client-secret-value="OIDC_CLIENT_SECRET" \ --web-sso-response-type="code" \ --web-sso-assertion-claims-behavior="merge-user-info-over-id-token-claims" \ --web-sso-additional-scopes="WEB_SSO_ADDITIONAL_SCOPES" \ --attribute-mapping="ATTRIBUTE_MAPPING" \ --attribute-condition="ATTRIBUTE_CONDITION" \ --jwk-json-path="JWK_JSON_PATH" \ --location=global

    다음을 바꿉니다.

    • PROVIDER_ID: 고유한 공급업체 ID gcp- 프리픽스는 예약되어 있으며 풀 또는 공급업체 ID에는 사용할 수 없습니다.
    • WORKFORCE_POOL_ID: IdP를 연결할 직원 ID 풀 ID
    • DISPLAY_NAME: 선택사항이며 공급업체의 사용자 친화적인 표시 이름(예: idp-eu-employees)
    • DESCRIPTION: 선택사항이며 직원 공급업체 설명(예: IdP for Partner Example Organization employees)
    • ISSUER_URI: 유효한 URI 형식의 OIDC 발급기관 URI, https(으)로 시작(예: https://example.com/oidc) 참고: 보안상의 이유로 ISSUER_URI은(는) HTTPS 스키마를 사용해야 합니다.
    • OIDC_CLIENT_ID: OIDC IdP에 등록된 OIDC 클라이언트 ID. ID가 IdP에서 발급한 JWT의 aud 클레임과 일치해야 합니다.
    • OIDC_CLIENT_SECRET: OIDC 클라이언트 보안 비밀번호
    • WEB_SSO_ADDITIONAL_SCOPES: 콘솔(제휴) 또는 gcloud CLI 브라우저 기반 로그인을 위해 OIDC IdP로 전송할 선택적 추가 범위
    • ATTRIBUTE_MAPPING: 속성 매핑. 예를 들면 다음과 같습니다.
      google.subject=assertion.sub,
      google.groups=assertion.group1,
      attribute.costcenter=assertion.costcenter
      이 예시에서는 OIDC 어설션의 IdP 속성인 subject, assertion.group1, costcenter을(를) 각각 google.subject, google.groups, attribute.costcenter 속성에 매핑합니다.
    • ATTRIBUTE_CONDITION: 속성 조건(예: assertion.role == 'gcp-users') 이 예시의 조건은 gcp-users 역할 사용자만 이 공급업체를 사용하여 로그인할 수 있도록 합니다.
    • JWK_JSON_PATH: 로컬로 업로드된 OIDC JWK의 선택적 경로입니다. 이 매개변수가 제공되지 않으면 Google Cloud는 IdP의 '/.well-known/openid-configuration' 경로를 사용하여 공개 키가 포함된 JWK를 소싱합니다. 로컬로 업로드된 OIDC JWK에 대한 자세한 내용은 OIDC JWK 관리를 참조하세요.
    명령어 응답에서 POOL_RESOURCE_NAME은 풀 이름입니다(예: locations/global/workforcePools/enterprise-example-organization-employees).

    암시적 흐름

    웹 로그인에 암시적 흐름을 사용하는 OIDC 공급업체를 만들려면 다음 명령어를 실행합니다.

    gcloud iam workforce-pools providers create-oidc PROVIDER_ID \
        --workforce-pool=WORKFORCE_POOL_ID \
        --display-name="DISPLAY_NAME" \
        --description="DESCRIPTION" \
        --issuer-uri="ISSUER_URI" \
        --client-id="OIDC_CLIENT_ID" \
        --web-sso-response-type="id-token" \
        --web-sso-assertion-claims-behavior="only-id-token-claims" \
        --web-sso-additional-scopes="WEB_SSO_ADDITIONAL_SCOPES" \
        --attribute-mapping="ATTRIBUTE_MAPPING" \
        --attribute-condition="ATTRIBUTE_CONDITION" \
        --jwk-json-path="JWK_JSON_PATH" \
        --location=global
    

    다음을 바꿉니다.

    • PROVIDER_ID: 고유한 공급업체 ID gcp- 프리픽스는 예약되어 있으며 풀 또는 공급업체 ID에는 사용할 수 없습니다.
    • WORKFORCE_POOL_ID: IdP를 연결할 직원 ID 풀 ID
    • DISPLAY_NAME: 선택사항이며 공급업체의 사용자 친화적인 표시 이름(예: idp-eu-employees)
    • DESCRIPTION: 선택사항이며 직원 공급업체 설명(예: IdP for Partner Example Organization employees)
    • ISSUER_URI: 유효한 URI 형식의 OIDC 발급기관 URI, https(으)로 시작(예: https://example.com/oidc) 참고: 보안상의 이유로 ISSUER_URI은(는) HTTPS 스키마를 사용해야 합니다.
    • OIDC_CLIENT_ID: OIDC IdP에 등록된 OIDC 클라이언트 ID. ID가 IdP에서 발급한 JWT의 aud 클레임과 일치해야 합니다.
    • WEB_SSO_ADDITIONAL_SCOPES: 콘솔(제휴) 또는 gcloud CLI 브라우저 기반 로그인을 위해 OIDC IdP로 전송할 선택적 추가 범위
    • ATTRIBUTE_MAPPING: 속성 매핑. 예를 들면 다음과 같습니다.
      google.subject=assertion.sub,
      google.groups=assertion.group1,
      attribute.costcenter=assertion.costcenter
      이 예시에서는 OIDC 어설션의 IdP 속성인 subject, assertion.group1, costcenter을(를) 각각 google.subject, google.groups, attribute.costcenter 속성에 매핑합니다.
    • ATTRIBUTE_CONDITION: 속성 조건(예: assertion.role == 'gcp-users') 이 예시의 조건은 gcp-users 역할 사용자만 이 공급업체를 사용하여 로그인할 수 있도록 합니다.
    • JWK_JSON_PATH: 로컬로 업로드된 OIDC JWK의 선택적 경로입니다. 이 매개변수가 제공되지 않으면 Google Cloud는 IdP의 '/.well-known/openid-configuration' 경로를 사용하여 공개 키가 포함된 JWK를 소싱합니다. 로컬로 업로드된 OIDC JWK에 대한 자세한 내용은 OIDC JWK 관리를 참조하세요.
    명령어 응답에서 POOL_RESOURCE_NAME은 풀 이름입니다(예: locations/global/workforcePools/enterprise-example-organization-employees).

    gcp- 프리픽스는 예약되어 있으며 풀 또는 공급업체 ID에는 사용할 수 없습니다.

    OIDC 페더레이션의 경우 ID 토큰 페이로드의 이름이 비슷한 클레임 값과 동일한 문자열인 assertion.NAME을 사용할 수 있습니다.

SAML 직원 풀 공급업체 만들기

  1. SAML IdP에서 Google Cloud 직원 ID 제휴를 위한 새 애플리케이션을 등록합니다.

  2. SAML 어설션의 대상을 설정합니다. 이는 일반적으로 IdP 구성의 SP Entity ID 필드입니다. 값을 다음 URL로 설정해야 합니다.

    https://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/PROVIDER_ID
    
  3. 콘솔에 대한 사용자 액세스를 설정하려면 SAML IdP에서 리디렉션 URL 또는 어설션 소비자 서비스(ACS) URL 필드를 다음 URL로 설정합니다.

    https://auth.cloud.google/signin-callback/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
    

    콘솔 로그인 구성에 대한 자세한 내용은 콘솔에 대한 사용자 액세스 설정을 참조하세요.

  4. Google Cloud에서 IdP의 SAML 메타데이터 문서를 사용하여 SAML 직원 ID 풀 공급업체를 만듭니다. IdP의 SAML 메타데이터 XML 문서를 다운로드할 수 있습니다. 문서에는 다음 항목이 반드시 포함되어야 합니다.

    • IdP의 SAML 엔티티 ID
    • IdP의 싱글 사인온(SSO) URL
    • 서명 공개 키 1개 이상 서명 키에 대한 자세한 내용은 이 가이드 뒷부분의 주요 요구사항을 참조하세요.

콘솔

Google Cloud 콘솔을 사용하여 SAML 공급업체를 구성하려면 다음을 수행합니다.

  1. Google Cloud 콘솔에서 직원 ID 풀 페이지로 이동합니다.

    직원 ID 풀로 이동

  2. 직원 ID 풀 표에서 공급업체를 만들 풀을 선택합니다.

  3. 공급업체 표에서 공급업체 추가를 클릭합니다.

  4. 프로토콜 선택에서 SAML을 선택합니다.

  5. 풀 공급업체 만들기에서 다음을 수행합니다.

    1. 이름에 공급업체 이름을 입력합니다.

    2. 선택사항: 설명에 공급업체에 대한 설명을 입력합니다.

    3. IDP 메타데이터 파일(XML)에서 이 가이드의 앞부분에서 생성한 메타데이터 XML 파일을 선택합니다.

    4. 사용 설정된 제공업체를 사용 설정합니다.

    5. 계속을 클릭합니다.

  6. 공급업체 구성에서 다음을 수행합니다.

    1. 속성 매핑에서 google.subject의 CEL 표현식을 입력합니다.

    2. 선택사항: 다른 매핑을 입력하려면 매핑 추가를 클릭하고 다른 매핑을 입력합니다. 예를 들면 다음과 같습니다.

      google.subject=assertion.subject,
      google.groups=assertion.attributes['https://example.com/aliases'],
      attribute.costcenter=assertion.attributes.costcenter[0]
      이 예시에서는 IdP 속성인 assertion.subject, assertion.attributes['https://example.com/aliases'], assertion.attributes.costcenter[0]을(를) Google Cloud 속성 google.subject, google.groups, google.costcenter에 각각 매핑합니다.

    3. 선택사항: 속성 조건을 추가하려면 조건 추가를 클릭하고 속성 조건을 나타내는 CEL 표현식을 입력합니다. 예를 들어 ipaddr 속성을 특정 IP 범위로 제한하려면 assertion.attributes.ipaddr.startsWith('98.11.12.') 조건을 설정합니다. 이 예시의 조건은 IP 주소가 98.11.12.로 시작하는 사용자만 이 직원 제공업체를 사용하여 로그인할 수 있도록 합니다.

    4. 계속을 클릭합니다.

  7. 공급업체를 만들려면 제출을 클릭합니다.

gcloud

gcloud CLI를 사용하여 SAML 공급업체를 구성하려면 다음을 수행합니다.

  gcloud iam workforce-pools providers create-saml PROVIDER_ID \
      --workforce-pool=WORKFORCE_POOL_ID \
      --display-name="DISPLAY_NAME" \
      --description="DESCRIPTION" \
      --idp-metadata-path=METADATA_FILE_PATH \
      --attribute-mapping="ATTRIBUTE_MAPPING" \
      --attribute-condition="ATTRIBUTE_CONDITION" \
      --location=global

다음을 바꿉니다.

  • PROVIDER_ID: 공급업체 ID
  • WORKFORCE_POOL_ID: 풀 ID
  • DISPLAY_NAME: 공급업체의 표시 이름(예: idp-eu-employees)
  • DESCRIPTION: 직원 ID 풀 공급업체에 대한 설명(예: IdP for Partner Example Organization EU employees)
  • METADATA_FILE_PATH: SAML 메타데이터의 파일 경로
  • ATTRIBUTE_MAPPING: 속성 매핑. 예를 들면 다음과 같습니다.

    google.subject=assertion.subject,
    google.groups=assertion.attributes['https://example.com/aliases'],
    attribute.costcenter=assertion.attributes.costcenter[0]
    이 예시에서는 IdP 속성인 assertion.subject, assertion.attributes['https://example.com/aliases'], assertion.attributes.costcenter[0]을(를) Google Cloud 속성 google.subject, google.groups, google.costcenter에 각각 매핑합니다.

  • ATTRIBUTE_CONDITION: 속성 조건 예를 들어 ipaddr 속성을 특정 IP 범위로 제한하려면 assertion.attributes.ipaddr.startsWith('98.11.12.') 조건을 설정합니다. 이 예시의 조건은 IP 주소가 98.11.12.로 시작하는 사용자만 이 직원 제공업체를 사용하여 로그인할 수 있도록 합니다.

제공업체가 요청을 수락하는 데 몇 분 정도 걸릴 수 있습니다.

SAML 제휴의 경우 속성 매핑 및 조건에 다음 키워드를 사용할 수 있습니다.

  • assertion.subject: SAML 어설션의 NameID 속성과 동일한 문자열입니다.
  • assertion.attributes.NAME: SAML 어설션의 이름이 비슷한 속성의 값과 동일한 문자열 목록입니다.

선택사항: IdP에서 암호화된 SAML 어설션 허용

SAML 2.0 IdP에서 직원 ID 제휴에서 허용할 수 있는 암호화된 SAML 어설션을 생성하도록 하려면 다음 안내를 따르세요.

  • 직원 ID 제휴에서 다음을 수행합니다.
    • 직원 ID 풀 공급업체의 비대칭 키 쌍을 만듭니다.
    • 공개 키가 포함된 인증서 파일을 다운로드합니다.
    • 공개 키를 사용하여 발급되는 SAML 어설션을 암호화하도록 SAML IdP를 구성합니다.
  • IdP에서 다음을 수행합니다.
    • 어설션 암호화(토큰 암호화라고도 함)를 사용 설정합니다.
    • 직원 ID 제휴에서 만든 공개 키를 업로드합니다.
    • IdP에서 암호화된 SAML 어설션을 생성하는지 확인합니다.
SAML 암호화 제공업체 키가 구성되어 있더라도 직원 ID 제휴는 일반 텍스트 어설션을 처리할 수 있습니다.

직원 ID 제휴 SAML 어설션 암호화 키 만들기

이 섹션에서는 직원 ID 제휴가 암호화된 SAML 어설션을 허용할 수 있도록 하는 비대칭 키 쌍을 만드는 방법을 설명합니다.

Google Cloud는 비공개 키를 사용하여 IdP에서 발급하는 SAML 어설션을 복호화합니다. SAML 암호화에 사용할 비대칭 키 쌍을 만들려면 다음 명령어를 실행합니다. 자세한 내용은 지원되는 SAML 암호화 알고리즘을 참조하세요.

gcloud iam workforce-pools providers keys create KEY_ID \
    --workforce-pool WORKFORCE_POOL_ID \
    --provider PROVIDER_ID \
    --location global \
    --use encryption \
    --spec KEY_SPECIFICATION

다음을 바꿉니다.

  • KEY_ID: 선택한 키 이름
  • WORKFORCE_POOL_ID: 풀 ID
  • PROVIDER_ID: 공급업체 ID
  • KEY_SPECIFICATION: 키 사양(rsa-2048, rsa-3072, rsa-4096 중 하나일 수 있음)

키 쌍이 생성된 후 공개 키를 인증서 파일로 다운로드하려면 다음 명령어를 실행합니다. 직원 ID 제휴만 비공개 키에 액세스할 수 있습니다.

gcloud iam workforce-pools providers keys describe KEY_ID \
    --workforce-pool WORKFORCE_POOL_ID \
    --provider PROVIDER_ID \
    --location global \
    --format "value(keyData.key)" \
    > CERTIFICATE_PATH

다음을 바꿉니다.

  • KEY_ID: 키 이름
  • WORKFORCE_POOL_ID: 풀 ID
  • PROVIDER_ID: 공급업체 ID
  • CERTIFICATE_PATH: 인증서를 작성할 경로(예: saml-certificate.cer 또는 saml-certificate.pem)

암호화된 SAML 어설션을 발급하도록 SAML 2.0 호환 IdP 구성

마지막 단계에서 다운로드한 공개 인증서를 사용하여 발급되는 SAML 어설션을 암호화하도록 SAML IdP를 구성합니다. 자세한 내용은 IdP팀에 문의하세요.

SAML 어설션을 암호화하도록 IdP를 구성한 후 생성되는 어설션이 실제로 암호화되는지 확인하는 것이 좋습니다. SAML 어설션 암호화를 구성하더라도 직원 ID 제휴는 일반 텍스트 어설션을 처리할 수 있습니다.

직원 ID 제휴 암호화 키 삭제

SAML 암호화 키를 삭제하려면 다음 명령어를 실행합니다.
  gcloud iam workforce-pools providers keys delete KEY_ID \
      --workforce-pool WORKFORCE_POOL_ID \
      --provider PROVIDER_ID \
      --location global

다음을 바꿉니다.

  • KEY_ID: 키 이름
  • WORKFORCE_POOL_ID: 풀 ID
  • PROVIDER_ID: 공급업체 ID

지원되는 SAML 암호화 알고리즘

직원 ID 제휴는 다음과 같은 주요 전송 알고리즘을 지원합니다.

직원 ID 제휴는 다음과 같은 블록 암호화 알고리즘을 지원합니다.

SAML X.509 서명 키 요구사항

SAML X.509 서명 키에는 다음 키 사양이 적용됩니다.

  • X.509 v3 인증서로 래핑된 RSA 공개 키

  • 인증서 유효성 요구사항:

    • notBefore: 향후 7일 이내의 타임스탬프입니다.
    • notAfter: 향후 15년 이내의 타임스탬프입니다.
  • 권장 알고리즘:

직원 ID 풀 공급업체는 지정된 시간의 서명 키 최대 3개로 구성할 수 있습니다. 여러 키가 존재하면 Google Cloud에서 이를 통해 반복하고 만료되지 않은 각 키를 사용하여 토큰 교환 요청을 시도합니다.

보안을 위해서는 동일한 키 쌍을 다른 서비스에 재사용하지 않는 것이 좋습니다.

키 관리

IdP의 서명 키를 업데이트하려면 다음을 수행합니다.

  1. 새 비대칭 키 쌍을 만들고 키 쌍으로 SAML ID 공급업체를 구성합니다. 이후 단계에서 활성화하기 전에 먼저 비활성으로 표시합니다.

  2. IdP에서 SAML 메타데이터 XML 문서를 다운로드합니다.

  3. SAML 메타데이터 문서를 사용하여 직원 ID 풀 공급업체 리소스를 업데이트합니다. 여러 키가 존재하면 Google Cloud에서 만료되지 않은 각 키를 통해 반복하고 토큰 교환 요청을 시도합니다.

    직원 ID 풀 공급업체를 SAML 메타데이터로 업데이트하려면 다음 명령어를 실행합니다.

    gcloud iam workforce-pools providers update-saml PROVIDER_ID \
        --workforce-pool=WORKFORCE_POOL_ID \
        --idp-metadata-path=SAML_METADATA_FILE_PATH \
        --location=global
    

    다음을 바꿉니다.

    • PROVIDER_ID: 공급업체 ID
    • WORKFORCE_POOL_ID: 직원 ID 풀 ID
    • SAML_METADATA_FILE_PATH: SAML 메타데이터 파일의 경로
  4. 이전 단계에서 반환된 작업이 완료될 때까지 기다린 후(작업이 완료로 표시됨) SAML IdP에서 새 서명 키를 활성화합니다. 이전 서명 키가 비활성으로 표시됩니다. IdP에서 발행된 어설션이 새 키를 통해 서명됩니다.

다음 단계는 선택사항이지만 수행하면 좋습니다.

  1. IdP에서 지금 비활성된 기존 서명 키를 삭제합니다.
  2. IdP에서 SAML 메타데이터 XML 문서를 다운로드합니다.
  3. SAML 메타데이터 문서를 사용하여 직원 ID 풀 공급업체 리소스를 업데이트합니다. Google Cloud에서 만료된 서명 키로 서명된 어설션을 거부합니다. 문서를 업데이트하려면 다음 명령어를 실행합니다.

    gcloud iam workforce-pools providers update-saml PROVIDER_ID \
        --workforce-pool=WORKFORCE_POOL_ID \
        --idp-metadata-path=SAML_METADATA_FILE_PATH \
        --location=global
    

    다음을 바꿉니다.

    • PROVIDER_ID: 공급업체 ID
    • WORKFORCE_POOL_ID: 직원 ID 풀 ID
    • SAML_METADATA_FILE_PATH: SAML 메타데이터 파일 경로

키 삭제 제약조건

Google Cloud에서 삭제된 키로 서명된 어설션을 거부합니다.

IAM 정책에서 직원 풀 사용자 표현

다음 표에서는 단일 사용자, 사용자 그룹, 특정 클레임을 전달하는 사용자, 직원 풀의 모든 사용자에게 역할을 부여하는 데 사용되는 주 구성원 식별자를 보여줍니다.

ID 식별자 형식
직원 ID 풀의 단일 ID principal://iam.googleapis.com/locations/global/workforcePools/POOL_ID/subject/SUBJECT_ATTRIBUTE_VALUE
그룹의 모든 직원 ID principalSet://iam.googleapis.com/locations/global/workforcePools/POOL_ID/group/GROUP_ID
특정 속성값의 모든 직원 ID principalSet://iam.googleapis.com/locations/global/workforcePools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE
직원 ID 풀의 모든 ID principalSet://iam.googleapis.com/locations/global/workforcePools/POOL_ID/*

주 구성원에 IAM 역할 부여

주 구성원에 단일 ID, ID 그룹, 전체 풀과 같은 역할을 부여할 수 있습니다.

주 구성원에 프로젝트 역할을 부여하려면 다음 명령어를 실행합니다.

gcloud projects add-iam-policy-binding PROJECT_ID \
    --role="ROLE" \
    --member="PRINCIPAL"

다음을 바꿉니다.

다음 예시의 명령어는 GROUP_ID 그룹 내의 모든 ID에 스토리지 관리자(roles/storage.admin)를 부여합니다.

gcloud projects add-iam-policy-binding my-project \
    --role="roles/storage.admin" \
    --member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID"

주 구성원 형식에 대한 자세한 내용은 IAM 정책에서 직원 ID 풀 사용자 표현을 참조하세요.

사용자 삭제

직원 ID 제휴는 제휴 사용자 ID에 대한 사용자 메타데이터 및 리소스를 만듭니다. 예를 들어 IdP에서 사용자를 삭제하도록 선택하는 경우 Google Cloud에서도 해당 리소스를 명시적으로 삭제해야 합니다. 이렇게 하려면 직원 ID 제휴 사용자 및 데이터 삭제를 참조하세요.

리소스가 삭제된 사용자와 계속 연결된 것으로 표시될 수 있습니다. 이는 사용자 메타데이터 및 리소스 삭제를 위해 장기 실행 작업이 필요하기 때문입니다. 사용자 ID 삭제를 시작한 후에는 프로세스가 완료되거나 취소되기 전까지 삭제 이전에 사용자가 시작한 프로세스가 계속 실행될 수 있습니다.

다음 단계