인포레터에서 최신 DevOps 트렌드를 격주로 만나보세요!
GCP 웹 콘솔 및 API에 대한 연합 인증 접근
GCP 워크포스 아이덴티티 연합은 Google Workspace 관리자가 관리하지 않는 아이덴티티에 대해 GCP 웹 콘솔 및 API에 대한 접근을 프로비저닝할 수 있도록 합니다.
워크포스 아이덴티티 연합 구성의 일반적인 워크플로우는 먼저 워크포스 풀을 생성하는 것입니다. 그 다음 단계는 풀 아이덴티티 공급자를 생성하고 구성하는 것입니다. 풀 아이덴티티 공급자가 구성되면, 사용자는 연합 인증 프로세스에서 자신의 아이덴티티가 아이덴티티 공급자로 서명된 경우 GCP 웹 콘솔에 로그인할 수 있습니다.
이 가이드는 GCP 워크포스 아이덴티티 연합 서비스를 Teleport SAML IdP와 통합하는 방법을 자세히 설명하여, 사용자가 Teleport로 인증하여 GCP 웹 콘솔에 로그인할 수 있도록 합니다.
전제 조건
-
실행 중인 Teleport 클러스터. Teleport를 시작하려면 가입하여 무료 평가판을 이용해 보십시오.
-
tctl
관리자 도구 및tsh
클라이언트 도구.tctl
및tsh
다운로드에 대한 지침은 설치 를 방문하십시오.
- 연결이 가능한지 확인하기 위해
tsh login
으로 로그인한 다음, 현재 자격 증명을 사용하여tctl
명령어를 실행할 수 있는지 확인하십시오. 예를 들어:클러스터에 연결할 수 있고tsh login --proxy=teleport.example.com --user=email@example.comtctl status클러스터 teleport.example.com
버전 17.0.0-dev
CA 핀 sha256:abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678
tctl status
명령어를 실행할 수 있다면, 현재 자격 증명을 사용하여 워크스테이션에서 후속tctl
명령어를 실행할 수 있습니다.
자신의 Teleport 클러스터를 호스팅하는 경우, Teleport Auth Service를 호스팅하는 컴퓨터에서 전체 권한으로tctl
명령어를 실행할 수도 있습니다. - SAML에 익숙하지 않다면, 진행하기 전에 SAML IdP 참조를 검토하는 것이 좋습니다.
- 서비스 제공자 리소스를 생성할 수 있는 권한을 가진 사용자. 미리 설정된
editor
역할은 이 권한을 가지고 있습니다. - 워크포스 아이덴티티 풀, 풀 제공자 및 IAM 정책을 생성할 수 있는 권한이 있는 GCP IAM API에 접근합니다. 최소한 "IAM 워크포스 풀 관리자의" 역할과 "조직 뷰어" GCP 역할을 구성해야 합니다 (GCP 조직 수준에서 할당됨).
Teleport 웹 UI는 GCP 워크포스 아이덴티티 연합을 위한 안내 및 수동 구성 흐름 모두를 제공합니다. 수동 흐름은 Teleport에 SAML 서비스 제공자를 등록하는 방법과 유사합니다. 안내 흐름에서는 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로 돌아가 아래의 단계를 따릅니다.
리소스 이름 및 ID
Teleport는 풀 이름과 풀 제공자 이름 값을 사용하여 각각 워크포스 풀 및 워크포스 풀 제공자에 대한 리소스 이름 및 리소스 ID를 구성합니다.
2/3단계 Teleport에 근무 풀 추가하기
UI에서 Next 버튼을 클릭하여 다음 단계로 진행합니다.
이 단계에서는 SAML IdP 서비스 제공자 이름, Entity ID, ACS URL 및 속성 이름이 "roles"인 하나의 속성 매핑 필드가 이미 채워져 있는 것을 확인할 수 있습니다. 이 값들은 이전 단계에서 제공된 GCP 구성 값을 기반으로 Teleport에 의해 생성됩니다.
Finish 버튼을 클릭하세요. 이제 근무 풀이 SAML IdP 서비스 제공자 리소스으로 Teleport에 추가됩니다.
Entity ID 및 ACS URL
Entity ID 및 ACS URL 값은 Pool Name 및 Pool Provider Name을 기반으로 생성됩니다. 이 값들 또는 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"
GCP 문서에서 IAM 정책에서 근무 사용자 및 그룹을 나타내는 데 사용할 수 있는 모든 가능한 값을 참조하십시오.
근무 풀 접근 관리
중요한 점은 GCP 근무 풀 및 풀 신원 제공자가 GCP 조직 수준에서 생성된다는 것입니다. 프로젝트 수준에서 IAM 정책을 생성하여 특정 프로젝트와 그 리소스에 각 근무 풀이 바인딩되도록 세분화된 접근 제어를 구성할 수 있습니다.
여러 개의 근무 풀을 생성하고 여러 근무 신원 제공자(개별 SAML IdP 서비스 제공자로 Teleport에 추가된)를 설정하는 것이 GCP 리소스에 대한 세분화된 접근 제어를 구성하는 권장 방법입니다.
속성 매핑
속성 매핑은 Teleport에서 생성된 SAML assertion 데이터에 있는 사용자 신원 및 특성을 GCP 신원에 매핑할 수 있도록 합니다.
GCP 속성 매핑은 Teleport SAML IdP 속성 매핑과 유사하지만, 속성을 매핑하기 위해 술어 표현 대신 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 정책을 생성해야 합니다.
예를 들어, gcp-dev
역할을 가진 Teleport 사용자에게 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 workforce pool" \
--location=global
다음으로, Teleport SAML IdP 메타데이터 파일을 다운로드합니다.
curl -o teleport-samlidp-metadata.xml https://<proxy_host>/enterprise/saml-idp/metadata
마지막으로, 인력 풀 공급자를 생성합니다.
gcloud iam workforce-pools providers create-saml <pool_provider_name> \
--workforce-pool=<pool_name> \
--display-name=<pool_provider_name> \
--description="Teleport workforce identity provider" \
--idp-metadata-path=./teleport-samlidp-metadata.xml \
--attribute-mapping="google.subject=assertion.subject,google.groups=assertion.attributes.roles" \
--location=global
GCP 인력 신원 연합 문서를 권위 있는 참고자료로 참조하십시오.
2/3단계. Teleport에 인력 풀 추가
인력 풀과 인력 풀 공급자를 생성한 후, 인력 풀 공급자 구성을 SAML 서비스 공급자 리소스로 Teleport에 추가해야 합니다.
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 정책을 생성해야 합니다.