GCP 워크포스 아이덴티티 연합은 Google Workspace Admin 또는 GCP Cloud Identity 내에서 관리되지 않는 아이덴티티에 대해 GCP 웹 콘솔 및 API에 대한 접근을 프로비저닝할 수 있도록 합니다.
워크포스 아이덴티티 연합을 구성하는 일반적인 워크플로우는 먼저 워크포스 풀을 생성하는 것입니다. 다음 단계는 풀 아이덴티티 프로바이더를 생성하고 구성하는 것입니다. 풀 아이덴티티 프로바이더가 구성되면, 사용자는 연합 인증 프로세스에서 아이덴티티 프로바이더에 서명만 하면 GCP 웹 콘솔에 로그인할 수 있습니다.
이 가이드는 사용자가 Teleport로 인증하여 GCP 웹 콘솔에 로그인할 수 있도록 GCP 워크포스 아이덴티티 연합 서비스를 Teleport SAML IdP와 통합하는 방법을 자세히 설명합니다.
필수 요건
-
실행 중인 Teleport 클러스터. Teleport를 시작하려면 가입하기 무료 체험판을 이용해 보세요.
-
tctl
관리 도구 및tsh
클라이언트 도구 버전 >= 16.2.0.tctl
및tsh
다운로드 방법에 대한 지침은 설치를 방문하세요.
- 당신의 Teleport 클러스터에 연결할 수 있는지 확인하려면,
tsh login
으로 로그인한 다음 현재 자격 증명을 사용하여tctl
명령어를 실행할 수 있는지 확인하십시오. 예를 들어:클러스터에 연결하고tsh login --proxy=teleport.example.com --user=email@example.comtctl status클러스터 teleport.example.com
버전 16.2.0
CA 핀 sha256:abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678
tctl status
명령어를 실행할 수 있다면, 현재 자격 증명을 사용하여 작업대에서 후속tctl
명령어를 실행할 수 있습니다. 자신의 Teleport 클러스터를 호스팅하는 경우, Teleport 인증 서비스를 호스팅하는 컴퓨터에서 전체 권한으로tctl
명령어를 실행할 수도 있습니다. - SAML에 익숙하지 않은 경우 진행하기 전에 SAML 아이덴티티 프로바이더 참조를 검토하는 것이 좋습니다.
- 서비스 제공자 리소스를 생성할 수 있는 권한이 있는 사용자. 기본 설정된
editor
역할은 이 권한을 가지고 있습니다. - GCP IAM API에 대한 접근 권한, 즉 워크포스 아이덴티티 풀, 풀 프로바이더 및 IAM 정책을 생성할 수 있는 권한이 필요합니다. 최소한 "IAM 워크포스 풀 관리자" 및 "조직 뷰어" GCP 역할이 필요합니다 (GCP 조직 수준에서 할당됨).
Teleport 웹 UI는 GCP 워크포스 아이덴티티 연합을 위한 안내 및 수동 구성 흐름을 모두 제공합니다. 수동 흐름은 SAML 서비스 제공자를 Teleport에 등록하는 방식과 유사합니다. 안내 흐름에서는 Teleport가 워크포스 풀 및 풀 프로바이더를 설정하는 bash 스크립트를 생성하여 통합을 빠르게 시작할 수 있도록 도와줍니다.
안내 구성 흐름
Teleport가 생성한 스크립트를 사용하여 워크포스 풀 및 풀 프로바이더를 생성합니다.
웹 UI에서 액세스 관리 아래 새 리소스 등록 메뉴를 클릭합니다. 검색 상자에 "workforce"를 입력하면 워크포스 아이덴티티 연합 통합 타일이 표시됩니다. 타일을 클릭하세요.
이제 아래에 나열된 단계를 따르세요.
1단계/3. 워크포스 풀 구성
첫 번째 단계로, 스크립트 생성기에 다음 정보를 제공하세요.
- 조직 ID: GCP 계정의 조직 ID. 이 ID는 워크포스 풀을 생성하는 데 필요합니다.
- 워크포스 풀 이름: 생성할 워크포스 풀의 이름. 이름은 GCP 리소스 명명 규칙을 따라야 합니다.
- 앱 이름 - 워크포스 풀 프로바이더 이름: SAML 앱 이름입니다. 이 이름은 GCP의 워크포스 풀 프로바이더 이름으로도 사용됩니다. 이름은 GCP 리소스 명명 규칙을 따라야 합니다.
명령 생성 버튼을 클릭하세요. Teleport 웹 UI는 이제 복사 가능한 bash 스크립트를 보여줍니다.
GCP Cloud Shell을 열고 Cloud Shell 터미널 내에서 위에서 복사한 bash 스크립트를 붙여넣습니다.
이 스크립트가 실행되면, curl을 통해 또 다른 bash 스크립트를 다운로드합니다. 이 다운로드된 bash 스크립트는 Teleport 이진 파일을 다운로드하고 실행하도록 구성됩니다. Teleport 이진 파일을 다운로드하면 bash 스크립트는 teleport integration configure samlidp gcp-workforce
명령을 실행하여 위에서 제공한 리소스 이름으로 워크포스 풀과 워크포스 풀 아이덴티티 프로바이더를 생성합니다.
워크포스 풀 프로바이더에 대해 Teleport는 GCP에서 두 개의 속성 매핑 필드도 생성합니다:
google.subject=assertion.subject
: Teleport 사용자 이름을 GCP 사용자 이름에 매핑합니다.google.groups=assertion.attributes.roles
: Teleport 사용자 역할을 GCP 그룹에 매핑합니다.
워크포스 풀과 풀 프로바이더가 생성되면 Teleport 웹 UI로 돌아가 아래 단계를 따르세요.
Teleport는 풀 이름과 풀 프로바이더 이름 값을 사용하여 각각 워크포스 풀과 워크포스 풀 프로바이더의 리소스 이름 및 리소스 ID를 구성합니다.
2단계/3 Teleport에 워크포스 풀 추가
UI에서 다음 단계로 진행하려면 다음 버튼을 클릭하세요.
이 단계에서는 SAML IdP 서비스 제공자 이름, 엔터티 ID, ACS URL 및 "roles"라는 속성 이름을 가진 속성 매핑 필드 하나가 이미 채워져 있습니다. 이 값들은 이전 단계에서 제공한 GCP 구성 값을 기반으로 Teleport가 생성한 것입니다.
완료 버튼을 클릭하세요. 이제 워크포스 풀이 Teleport에 SAML IdP 서비스 제공자 리소스로 추가됩니다.
엔터티 ID 및 ACS URL 값은 풀 이름 및 풀 프로바이더 이름을 기반으로 생성됩니다. 이 값이나 GCP에서 속성 매핑을 업데이트하면, Teleport에서도 해당 SAML 서비스 제공자 사양을 업데이트해야 합니다.
3단계/3 GCP IAM 정책 생성
풀과 풀 프로바이더가 GCP에서 구성되고, 해당 구성 요소가 SAML 서비스 제공자 리소스로 Teleport에 추가되면, 사용자는 Teleport 역할이 SAML 리소스에 접근할 수 있는 권한이 있는 한 GCP 웹 콘솔에 로그인할 수 있습니다.
하지만 이 단계에서 인증된 사용자는 GCP 웹 콘솔에 로그인할 수만 있으며, 아직 아무 리소스에도 접근할 수 없습니다. 이를 위해서는 사용자를 위한 원하는 역할이 포함된 GCP IAM 정책을 생성해야 합니다.
GCP Cloud Shell로 다시 이동하여 IAM 정책을 생성하세요.
워크포스 풀을 위한 IAM 정책 생성 과정은 일반적인 GCP IAM 정책 구성 방식과 유사하지만, "member" 필드에서 외부 사용자 또는 사용자 그룹을 식별하는 워크포스 주체 값을 참조해야 합니다.
예를 들어, 다음의 gcloud
명령은 GCP 프로젝트 리소스 탐색 권한이 있는 워크포스 풀 사용자 test@example.com
에 대한 IAM 정책을 생성하는 방법을 보여줍니다.
gcloud projects add-iam-policy-binding GCP_PROJECT_ID \
--role="roles/browser" \
--member="principal://iam.googleapis.com/locations/global/workforcePools/<pool id>/subject/test@example.com"
워크포스 아이덴티티 연합에서 IAM 정책을 구성하는 방법에 대한 GCP 문서를 참조하세요.
워크포스 풀 액세스 관리
중요한 점은 GCP 워크포스 풀과 풀 아이덴티티 프로바이더가 GCP 조직 수준에서 생성된다는 것입니다. IAM 정책을 프로젝트 수준에서 생성하여 각 워크포스 풀을 특정 프로젝트와 해당 리소스에 바인딩하여 세분화된 액세스 제어를 구성할 수 있습니다.
여러 개의 워크포스 풀을 생성하고 각각을 여러 개의 워크포스 아이덴티티 프로바이더(개별 SAML IdP 서비스 제공자로 Teleport에 추가)로 구성하는 것이 GCP 리소스에 대한 세분화된 액세스 제어를 구성하는 데 권장되는 방법입니다.
속성 매핑
속성 매핑은 Teleport가 생성한 SAML 어설션 데이터에 포함된 사용자 아이덴티티 및 특성들을 GCP 아이덴티티에 매핑할 수 있게 합니다.
GCP 속성 매핑은 Teleport SAML IdP 속성 매핑과 유사하지만, 속성을 매핑할 때는 predicate 표현식 대신 Google CEL을 사용합니다.
안내 흐름에서 Teleport는 두 개의 속성 매핑을 생성합니다:
- Google 주체 이름:
google.subject=assertion.subject
. 이는 Teleport 사용자 이름을 Google 사용자 이름에 매핑합니다. - Google 그룹:
google.groups=assertion.attributes.roles
. 이는 Teleport 역할을 Google 그룹에 매핑합니다.
추가 정보는 워크포스 아이덴티티 연합 속성 매핑 문서를 참조하세요.
액세스 조건
액세스 조건은 어떤 사용자가 GCP 워크포스 풀에 들어갈 수 있는지를 제어하는 데 사용할 수 있습니다. 예를 들어, 역할 이름 gcp-prod
를 가진 Teleport 사용자만 GCP 풀에 입장하도록 하려면, 워크포스 풀 프로바이더에서 다음 액세스 조건을 작성할 수 있습니다.
"gcp-prod" in assertion.attributes.roles
워크포스 아이덴티티 연합 액세스 조건 문서를 참조하여 추가 정보를 확인하세요.
Teleport 역할에 따른 GCP 리소스 접근 매핑
Teleport 역할에 따라 GCP 리소스 접근을 매핑하려면, Teleport 역할 이름을 참조하는 principalSet
에 바인딩된 IAM 정책을 생성해야 합니다.
예를 들어, Teleport 사용자가 gcp-dev
역할을 가진 경우 GCP 역할 roles/browser
을 할당하는 접근 정책을 생성하려면 다음과 같은 단계를 따라야 합니다.
먼저, 워크포스 풀 아이덴티티 프로바이더는 Teleport 역할을 GCP 그룹에 매핑하는 속성 매핑으로 구성되어야 합니다: google.groups=assertion.attributes.roles
.
그 다음, GCP 그룹을 참조하는 IAM 정책이 생성되어야 합니다.
gcloud projects add-iam-policy-binding <GCP_Project_ID> \
--role="roles/browser" \
--member="principalSet://iam.googleapis.com/locations/global/workforcePools/<pool id>/group/gcp-dev"
Teleport 역할이 속성 매핑에 의해 GCP 그룹으로 매핑되었으므로, 이 정책은 gcp-dev
역할이 할당된 Teleport 사용자에게 접근을 허용합니다.
수동 통합
안내 통합은 시작하는 데 용이하지만, 고급 구성 요구 사항은 수동 통합을 따라야 합니다. 웹 UI와 Teleport tctl
클라이언트를 모두 사용하여 수동 구성을 수행할 수 있습니다. 다음 단계는 Teleport tctl
관리 클라이언트를 사용한 구성을 보여줍니다.
1단계/3. 워크포스 풀 및 풀 프로바이더 생성
먼저, 워크포스 풀을 생성합니다.
gcloud iam workforce-pools create <pool_name> \
--display-name=<pool_name> \
--organization=<gcp_organization_id> \
--description="Teleport 워크포스 풀"
다음으로, Teleport SAML IdP 메타데이터 파일을 다운로드합니다.
curl -o teleport-samlidp-metadata.xml https://<proxy_host>/enterprise/saml-dp/metadata
마지막으로, 워크포스 풀 프로바이더를 생성합니다.
gcloud iam workforce-pools providers create-saml <pool_provider_name> \
--workforce-pool=<pool_name> \
--display-name=<pool_provider_name> \
--description="Teleport 워크포스 아이덴티티 프로바이더" \
--idp-metadata-path=teleport-samlidp-metadata.xml" \
--attribute-mapping="google.subject=assertion.subject,google.groups=assertion.attributes.roles" \
--location=global
GCP 워크포스 아이덴티티 연합 문서를 참조하여 자세한 정보를 확인하세요.
2단계/3. Teleport에 워크포스 풀 추가
워크포스 풀 및 워크포스 풀 프로바이더를 생성한 후, Teleport의 SAML 서비스 제공자 리소스로서 워크포스 풀 프로바이더 구성을 추가해야 합니다.
saml_idp_service_provider
사양:
kind: saml_idp_service_provider
version: v1
metadata:
name: pool_provider_name
spec:
entity_id: https://iam.googleapis.com/locations/global/workforcePools/pool_name/providers/pool_provider_name
acs_url: https://auth.cloud.google/signin-callback/locations/global/workforcePools/pool_name/providers/pool_provider_name
preset: gcp-workforce
relay_state: https://console.cloud.google/
attribute_mapping:
- name: roles
name_format: urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified
value: user.spec.roles
pool_name 및 pool_provider_name 값을 1단계에서 사용한 워크포스 풀 및 풀 프로바이더 이름으로 교체합니다.
사양을 pool_provider_name.yaml 파일로 저장합니다. 그리고 SAML 서비스 제공자 리소스를 생성합니다.
$ tctl create pool_provider_name.yaml
3단계/3: GCP IAM 정책 생성
이 단계는 안내 구성 흐름의 3단계와 유사합니다. 워크포스 주체를 나타내는 GCP IAM 정책을 생성해야 합니다.