Deployment Manager로 커스텀 역할 유지관리

배경

ID 및 액세스 관리 커스텀 역할을 사용하면 사용자 계정 및 서비스 계정에 세분화된 권한을 부여할 수 있습니다. Google이 유지관리하며 이에 따라 업데이트되는 사전 정의된 역할과 달리 커스텀 역할은 새로운 권한을 사용할 수 있게 되면 조직에서 관리합니다.

Cloud Deployment Manager를 사용하면 커스텀 역할을 더 쉽게 구성하고 유지관리할 수 있습니다. Cloud Deployment Manager에서는 구성 파일을 사용하여 역할을 설명할 수 있으며 이 역할은 선택한 소스 제어 시스템에 체크인할 수 있습니다. Deployment Manager와 소스 제어를 함께 사용하면 다음 목적으로 'config-as-code(코드로 구성)'를 더 쉽게 만들 수 있습니다.

  • 시간 경과에 따른 커스텀 역할의 변화 추적
  • 테스트 및 검증을 거쳐 출시 단계까지 커스텀 역할 승격
  • 조직 전체에 역할을 배포하는 방법 자동화

시작하기 전에

  • API IAM and Cloud Deployment Manager 사용 설정

    API 사용 설정

Deployment Manager를 사용한 커스텀 역할 유지관리 시나리오

Deployment Manager를 사용하여 커스텀 역할을 유지관리하는 이점을 보여주는 다음 시나리오를 참조하세요.

  • 새 권한에 대한 액세스 제어: Google Cloud 서비스에 대한 권한이 포함된 커스텀 역할이 있습니다. 서비스는 새로운 베타 기능을 추가하고 새로운 권한을 공개합니다. 커스텀 역할은 이러한 새로운 권한을 자동으로 상속받지 않으므로 수동으로 추가해야 합니다. 새로운 권한이 커스텀 역할에 추가되기 전까지 조직의 사용자는 베타 기능에 액세스할 수 없습니다. Deployment Manager의 구성 파일 및 소스 제어를 사용해 기존 권한을 감사하고, 필요에 따라 커스텀 역할을 업데이트하고, 업데이트 기록을 유지관리할 수 있습니다.
  • 역할 수명주기 관리: ALPHA 출시 단계를 할당받은 새로운 커스텀 역할이 있습니다. 커스텀 역할을 테스트하고 검사한 후에는 Deployment Manager를 사용하여 커스텀 역할의 구성을 업데이트하고 Google Cloud Console 없이 BETA 단계로 진행할 수 있습니다.
  • 커스텀 역할 도입 이해하기: 소스 제어에 조직의 커스텀 역할 정의를 더 많이 추가하면 여러 프로젝트에 걸쳐 더 쉽게 공유하고 사용 패턴을 통해 학습하며 액세스 제어를 강화할 수 있습니다.

Deployment Manager 구성 파일 이해하기

Deployment Manager는 배포를 설명하기 위해 3가지 파일 유형을 사용합니다. 각 유형에 관해 설명하자면 다음과 같습니다.

  • 구성은 리소스 및 해당 속성을 설명하는 YAML 파일입니다. ID 및 액세스 관리(IAM) 커스텀 역할에서 각 YAML 파일은 이름, 설명, 권한 등 하나 이상의 커스텀 역할에 대한 모든 속성을 지정합니다.
  • 스키마는 주어진 리소스 및 해당 기본값에 대한 가능한 모든 속성을 지정합니다. IAM 커스텀 역할의 경우 프로젝트 수준 및 조직 수준의 커스텀 역할에 대한 스키마가 있습니다.
  • 템플릿은 구성을 재사용 가능한 부분으로 분해하여 구성을 개선하는 Jinja 또는 Python 파일입니다. IAM 커스텀 역할에서는 두 가지 템플릿, 즉 프로젝트 수준 커스텀 역할용 템플릿과 조직 수준 커스텀 역할용 템플릿이 제공됩니다.

이러한 유형에 관한 자세한 내용은 Deployment Manager 기초를 참조하세요.

시작하기 전에

Deployment Manager에 익숙하지 않은 경우 먼저 빠른 시작을 완료하세요. 이어서 아래 단계를 따릅니다.

  1. Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
  2. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기로 이동

  3. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  4. API Deployment Manager and IAM 사용 설정

    API 사용 설정

  5. Google Cloud CLI를 설치합니다.
  6. gcloud CLI를 초기화하려면 다음 명령어를 실행합니다.

    gcloud init
  7. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기로 이동

  8. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  9. API Deployment Manager and IAM 사용 설정

    API 사용 설정

  10. Google Cloud CLI를 설치합니다.
  11. gcloud CLI를 초기화하려면 다음 명령어를 실행합니다.

    gcloud init

사전 필수 단계를 완료한 후 IAM에서 Deployment Manager를 사용하여 커스텀 역할을 유지관리할 수 있습니다.

Google API 서비스 계정에 권한 부여

Deployment Manager를 사용하여 커스텀 역할을 유지관리하려면 먼저 Google API 서비스 계정에 적절한 권한을 부여해야 합니다. 이 계정은 각 조직 및 프로젝트에 기본적으로 생성됩니다.

  1. Google Cloud Console에서 IAM 페이지로 이동합니다.

    IAM 페이지로 이동

  2. 주 구성원 목록에서 이름이 Google API 서비스 에이전트인 주 구성원을 찾습니다.

  3. 서비스 계정의 역할을 수정하려면 수정 버튼을 클릭한 다음 역할 > 역할 관리자 역할을 추가합니다.

  4. 저장을 클릭하여 역할을 적용합니다.

커스텀 역할을 유지관리하기 위한 권한이 Google API 서비스 계정에 권한이 부여되었으므로 Deployment Manager를 사용하여 샘플 커스텀 역할을 배포할 수 있습니다.

프로젝트에 커스텀 역할 배포

위 섹션에서 설명한 대로 Deployment Manager는 구성 파일의 조합을 사용하여 배포를 설명합니다. IAM의 경우 프로젝트의 커스텀 역할에 대한 다음 두 개의 예시 파일을 참조하세요.

project_custom_role.yaml

imports:
- path: project_custom_role.jinja

resources:
- name: custom-role
  type: project_custom_role.jinja
  properties:
    roleId: myCustomRole
    title: My Title
    description: My description.
    includedPermissions:
    - iam.roles.get
    - iam.roles.list

이 YAML 파일은 iam.roles.getiam.roles.list에 대한 권한을 부여하는 custom-role이라는 커스텀 역할의 속성을 지정합니다. 이는 .jinja 파일을 두 번 참조하며 이러한 참조는 아래에 설명된 대로 Jinja 템플릿에서 제공하는 값을 사용합니다.

project_custom_role.jinja

# Copyright 2017 Google LLC. All rights reserved.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#     http://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

resources:
- name: custom-role
  type: gcp-types/iam-v1:projects.roles
  properties:
    parent: projects/{{ env["project"] }}

    roleId: {{ properties["roleId"] }}

    role:
      title: {{ properties["title"] }}

      description: {{ properties["description"] }}

      stage: {{ properties["stage"] }}

      includedPermissions: {{ properties["includedPermissions"] }}

Jinja 파일은 커스텀 역할에 대한 템플릿을 제공하여 여러 역할에 걸친 동일한 속성의 중복을 최소화합니다. 해당 YAML 파일에 각 속성의 값이 지정되어 있지 않으면 .schema 파일의 기본값이 삽입됩니다.

Deployment Manager를 사용해 커스텀 역할을 배포하려면 다음 안내를 따르세요.

  1. GitHub 저장소의 콘텐츠를 로컬 머신에 다운로드합니다.
  2. 터미널 창에서 다운로드된 저장소의 examples/v2/iam_custom_role/jinja 디렉터리로 이동합니다. 여기에는 project_custom_role.yaml 파일 및 관련 Jinja 파일이 포함되어 있습니다.
  3. 다음 명령어를 실행하여 커스텀 역할 예시를 배포하고 your-deployment-name 자리표시자 값을 선택한 배포 이름으로 교체합니다.

    gcloud deployment-manager deployments create \
       your-deployment-name --config project_custom_role.yaml
    
  4. 작업이 완료될 때까지 기다립니다. 배포 지문 및 진행률 표시기가 다음과 같이 표시됩니다.

    The fingerprint of the deployment is PUo2fmKdoFdJqiLViHjT3Q==
    Waiting for create [operation-1513228867042-560460d157ad1-b4ababb8-c6a7dddc]...done.
    
  5. 작업이 성공하면 다음과 같은 상태 메시지가 표시됩니다.

    Create operation operation-1513228867042-560460d157ad1-b4ababb8-c6a7dddc completed successfully.
    NAME         TYPE                             STATE      ERRORS  INTENT
    custom-role  gcp-types/iam-v1:projects.roles  COMPLETED  []
    

배포한 커스텀 역할 보기

Deployment Manager에서 커스텀 역할을 보려면 다음을 수행하세요.

  1. 터미널 창에서 다음 명령어를 실행합니다.

    gcloud deployment-manager deployments describe your-deployment-name
    
  2. 상태, 오류 등에 관한 포괄적인 정보를 비롯한 배포에 대한 설명이 표시됩니다.

    fingerprint: oaJoGesEFYvsAldP2bm5jQ==
    id: '3222872306422524501'
    insertTime: '2018-01-29T13:40:10.822-08:00'
    manifest: manifest-1517262010855
    name: your-deployment-name
    operation:
    endTime: '2018-01-29T13:40:26.500-08:00'
    name: operation-1517262010573-563f1172be0c9-ce5f0242-239fe1af
    operationType: insert
    progress: 100
    startTime: '2018-01-29T13:40:11.535-08:00'
    status: DONE
    user: id-7201362145@my-example-project.iam.gserviceaccount.com
    NAME         TYPE                             STATE      INTENT
    custom-role  gcp-types/iam-v1:projects.roles  COMPLETED
    
  3. 또한 배포의 매니페스트를 검색하여 커스텀 역할의 구성에 관한 세부정보를 확인할 수 있습니다. 위의 2단계에서 describe 명령어의 출력에 있는 manifest ID를 적어 둡니다. manifest- 프리픽스를 포함해 이 ID를 복사한 다음 아래의 자리표시자 값을 이 ID로 교체합니다.

    gcloud deployment-manager manifests describe your-manifest-id \
        --deployment your-deployment-name
    
  4. 매니페스트는 소스 project_custom_role.yamlproject_custom_role.jinja 파일의 원본 콘텐츠를 비롯하여 커스텀 역할 배포에 관한 완전한 정보를 포함합니다. 특히 매니페스트의 하단 근처에 위치하여 커스텀 역할에 대한 세부정보를 요약하는 resources 블록을 기록합니다.

    ...
    resources:
    - name: custom-role
      properties:
        description: My description.
        includedPermissions:
        - iam.roles.get
        - iam.roles.list
        roleId: aCustomRole
        stage: ALPHA
        title: My Title
      resources:
      - name: custom-role
        type: gcp-types/iam-v1:projects.roles
      type: project_custom_role.jinja
    ...
    

Google Cloud Console에서 커스텀 역할을 보려면 다음 안내를 따르세요.

  1. Google Cloud Console에서 IAM 페이지로 이동합니다.

    IAM 페이지로 이동

  2. 프로젝트를 선택하고 열기를 클릭합니다.

  3. 왼쪽 메뉴에서 역할을 클릭합니다.

  4. 목록에서 새로 만든 커스텀 역할의 이름을 클릭하면 다음 스크린샷과 같이 표시됩니다.