프로젝트 간 유형 공유

이 페이지에서는 개발자의 프로젝트에 속하는 유형 및 유형 공급자를 다른 프로젝트와 공유하는 방법을 설명합니다. 예를 들어 개발자의 회사를 위해 사전 승인된 유형 공급자를 유지 관리해야 하는 프로젝트가 있다고 가정해보세요. 이를 위해서는 개발자가 해당 프로젝트의 유형 공급자를 다른 프로젝트와 공유하고 프로젝트를 유형 중앙 저장소로 사용해야 할 수 있습니다. 또한 이 메서드를 사용하여 프로젝트 간에 복합 유형을 공유할 수도 있습니다.

액세스 권한을 설정하려면 이 유형을 소유하는 프로젝트의 프로젝트 소유자가 이 유형을 사용할 프로젝트의 서비스 계정에 deploymentmanager.typeViewer (베타) 역할을 부여해야 합니다. 또한 다른 프로젝트의 유형을 보고 나열할 사용자에게도 이 역할을 부여해야 합니다.

시작하기 전에

제한사항

이 기능에 적용되는 제한사항은 다음과 같습니다.

  • deploymentmanager.typeViewer 역할을 부여하면 특정 프로젝트에 있는 모든 유형에 대한 권한이 부여됩니다. 개별 유형으로 공유를 제한할 수 없습니다.
  • allAuthenticatedUsers 또는 allUsers에는 이 역할을 부여할 수 없습니다.

프로젝트에 유형 사용을 위한 액세스 권한 부여

다른 프로젝트에 속하는 유형에 대한 액세스 권한을 부여하려면 유형을 소유하는 프로젝트 소유자가 유형을 사용할 프로젝트의 Google API 서비스 계정deploymentmanager.typeViewer 역할을 부여해야 합니다.

  1. 유형을 사용할 프로젝트의 Cloud Console에서 IAM 페이지로 이동합니다.

    IAM 페이지로 이동

  2. 메시지가 나타나면 목록에서 프로젝트를 선택합니다.
  3. 다음과 같은 형식의 이메일 주소를 사용하는 Google API 서비스 계정을 찾습니다.

    [PROJECT_NUMBER]@cloudservices.gserviceaccount.com
    
  4. 위의 이메일 주소를 기록합니다. 그러면 원하는 유형이 있는 프로젝트의 프로젝트 소유자가 Google API 서비스 계정에 roles/deploymentmanager.typeViewer 역할을 부여할 수 있습니다.

    Console

    1. Google Cloud Console에서 공유하려는 유형이 포함된 프로젝트의 IAM 페이지로 이동합니다.

      IAM 페이지로 이동

    2. 프로젝트 목록에서 프로젝트를 선택합니다.
    3. 추가 버튼을 클릭해 새 구성원을 추가합니다.
    4. 구성원 상자에 서비스 계정의 이메일 주소를 입력합니다.
    5. 역할 드롭다운을 확장하고 기타 > Deployment Manager 유형 뷰어(베타)를 선택합니다.
    6. 추가를 클릭해 계정을 추가합니다.

    gcloud

    gcloud 명령줄 도구를 사용하여 프로젝트의 IAM 정책에 바인딩을 추가합니다.

    gcloud projects add-iam-policy-binding [PROJECT_ID] \
        --member serviceAccount:[SERVICE_ACCOUNT_EMAIL] --role roles/deploymentmanager.typeViewer

    각 항목의 의미는 다음과 같습니다.

    • [PROJECT_ID]는 공유하려는 이미지가 포함된 프로젝트의 ID입니다.
    • [SERVICE_ACCOUNT_EMAIL]은 유형을 공유하려는 프로젝트에 있는 서비스 계정의 이메일입니다.

    예를 들면 다음과 같습니다.

    gcloud projects add-iam-policy-binding database-images \
        --member serviceAccount:123456789012@cloudservices.gserviceaccount.com  \
        --role roles/deploymentmanager.typeViewer

    API

    API에서 다음 URL에 대한 POST 요청을 수행합니다. 여기서 [PROJECT_ID]는 공유하려는 유형이 포함된 프로젝트의 ID입니다.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/$[PROJECT_ID]:setIamPolicy
    

    프로젝트에 적용할 바인딩 목록이 요청 본문에 포함되어야 하며 roles/deploymentmanager.typeViewer 역할이 바인딩의 일부여야 합니다. 예를 들면 다음과 같습니다.

    {
       "policy": {
           "version": "0",
           "bindings": [
           {
               "role": "roles/owner",
               "members": [
                   "user:example@gmail.com"
               ]
           },
           {
               "role": "roles/deploymentmanager.typeViewer",
               "members": [
                   "serviceAccount:123456789012@cloudservices.gserviceaccount.com"
               ]
           }
           ]
       }
    

    }

구성에서 다른 프로젝트의 유형 사용

유형에 액세스할 수 있게 되면 다음 구문을 사용하여 구성에서 유형을 지정할 수 있습니다. 복합 유형의 경우는 다음과 같습니다.

type: [PROJECT_ID]/composite:[TYPE]

유형 공급자의 경우는 다음과 같습니다.

type: [PROJECT_ID]/[TYPE]:[COLLECTION]

각 항목의 의미는 다음과 같습니다.

  • [PROJECT_ID]는 유형을 소유하는 프로젝트 ID입니다.
  • [TYPE]은 유형 공급자 이름이거나 복합 유형입니다.
  • [COLLECTION]은 만들려는 특정 리소스로, 기본 유형에만 적용될 수 있습니다. 기본 유형 지정에 대한 자세한 내용은 구성에서 유형 공급자 호출을 참조하세요.

예를 들어 프로젝트 ID가 my-type-repository이면 다음 유형 사양을 제공할 수 있습니다.

resources:
- name: a-special-vm
  type: my-type-repository/composite:autoscaled-igm
  properties:
    ...

사용자에게 유형 나열 및 보기 기능 부여

프로젝트의 서비스 계정에 deploymentmanager.typeViewer 역할을 부여하면 프로젝트가 구성에서 이러한 유형을 배포할 수 있지만 사용자가 이러한 유형을 보거나 나열할 수 없습니다. 개별 사용자가 유형을 볼 수 있도록 하려면 각 사용자에게 deploymentmanager.typeViewer 역할을 부여해야 합니다.

예를 들어 Jane이 자신에게 속하지 않는 프로젝트에 gcloud beta deployment-manager types list --project another-project 명령어를 실행할 수 있도록 하려면 another-project 소유자가 Jane에게 deploymentmanager.typeViewer 역할을 부여해야 합니다.

gcloud 도구를 사용하면 Jane에게 다음과 같이 역할을 부여할 수 있습니다.

 gcloud projects add-iam-policy-binding another-project \
        --member user:jane@gmail.com --role deploymentmanager.typeViewer

사용자에게 역할을 추가하고 삭제하는 방법에 대한 자세한 내용은 프로젝트 구성원에 액세스 권한 부여, 변경, 취소 문서를 참조하세요.

다음 단계