Privileged Access Manager에서 사용 권한 만들기

일부 주 구성원의 임시 권한 상승을 허용하는 사용 권한을 만들 수 있습니다. 사용 권한을 만들 때는 다음 사항에 유의하세요.

  • 사용 권한은 조직, 폴더 또는 프로젝트 수준에서 만들 수 있습니다. 각 수준에서 사용 권한에 의해 부여되는 역할은 Google Cloud 리소스 계층 구조를 따릅니다. 예를 들어 조직 수준에서 사용 권한에 의해 부여된 역할은 폴더 및 프로젝트 수준에서 상속됩니다.

  • 사용 권한에 그룹을 요청자로 추가하면 해당 그룹의 모든 개별 계정이 해당 사용 권한의 부여를 요청할 수 있습니다. 하지만 부여를 요청하는 개인 계정만 승격된 권한을 받을 수 있습니다.

  • 사용 권한에 그룹을 승인 담당자로 추가하면 해당 그룹의 모든 개별 계정이 부여 요청을 승인하거나 거부할 수 있습니다.

  • 기본 역할은 지원되지 않습니다.

시작하기 전에

Privileged Access Manager를 사용 설정하고 권한을 설정했는지 확인합니다.

Google Cloud 콘솔을 사용하여 사용 권한 만들기

사용 권한을 만들려면 다음 안내를 따르세요.

  1. Privileged Access Manager 페이지로 이동합니다.

    Privileged Access Manager로 이동

  2. 사용 권한을 적용할 조직, 폴더 또는 프로젝트를 선택합니다.

  3. 사용 권한 탭을 클릭합니다.

  4. 만들기를 클릭합니다.

  5. 다음 사용 권한 세부정보를 추가합니다.

    • 사용 권한 이름

    • 조직, 폴더 또는 프로젝트에 부여할 최대 30개의 역할. 이러한 역할이 리소스 태그와 일치하지 않는다면 이러한 역할에 IAM 조건을 적용할 수 있습니다.

    • 사용 권한 부여가 지속되는 기간

  6. 다음을 클릭합니다.

  7. 요청하는 유효한 주 구성원을 사용 권한당 최대 20개까지 검색하여 추가합니다. allUsersallAuthenticatedUsers를 제외한 모든 주 구성원 유형이 지원됩니다. 20개가 넘는 ID를 그룹에 추가하고 사용 권한에 그룹을 나열하여 추가할 수 있습니다.

  8. 주 구성원이 부여 요청에 대한 근거를 제공해야 하는지 선택합니다.

  9. 다음을 클릭합니다.

  10. 승인 없이 역할 부여를 허용하도록 선택하거나 요청을 승인할 수 있는 유효한 주 구성원을 검색하여 추가합니다. 유효한 주 구성원 유형은 다음과 같습니다.

    • Google 계정

    • Google 그룹스

    • Google Workspace 도메인

    • 직원 풀 식별자

    승인 담당자를 지정하는 경우 승인 담당자가 부여 요청 승인에 대한 근거를 제공해야 하는지 여부도 선택합니다. 승인하는 주 구성원은 사용 권한당 최대 20개까지 추가할 수 있습니다. 20개가 넘는 ID를 그룹에 추가하고 사용 권한에 그룹을 나열하여 추가할 수 있습니다.

  11. 다음을 클릭합니다.

  12. 선택사항: 사용 권한을 요청할 수 있을 때, 부여가 승인 대기 중일 때, 요청자에게 액세스 권한이 부여될 때 알림을 보낼 사용자의 이메일 주소를 추가합니다. 사용 권한과 연결된 Google ID(예: 승인 담당자 및 요청자)에게 자동으로 알림이 전송됩니다. 하지만 특히 직원 ID 제휴를 사용하는 경우 다른 이메일 주소 집합에 알림을 보내야 할 수 있습니다.

  13. 사용 권한 만들기를 클릭합니다.

프로그래매틱 방식으로 사용 권한 만들기

gcloud

gcloud beta pam entitlements create 명령어는 조직, 폴더 또는 프로젝트 수준에서 사용 권한을 만듭니다.

아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.

  • ENTITLEMENT_ID: 만들 사용 권한 ID입니다. ID는 4~63자(영문 기준)여야 하며 [a-z0-9-] 문자를 사용해야 합니다. 첫 번째 글자는 문자여야 합니다.
  • RESOURCE_TYPE: 선택사항. 사용 권한이 속한 리소스 유형입니다. organization, folder 또는 project 값을 사용합니다.
  • RESOURCE_ID: RESOURCE_TYPE에 사용됩니다. 사용 권한을 관리하려는 Google Cloud 조직, 폴더 또는 프로젝트의 ID입니다. 프로젝트 ID는 my-project와 같은 영숫자 문자열입니다. 폴더 및 조직 ID는 123456789012와 같은 숫자입니다.
  • SCOPE: 사용 권한을 만들 조직, 폴더 또는 프로젝트로, organizations/ORGANIZATION_ID, folders/FOLDER_ID 또는 projects/PROJECT_ID 형식입니다. 프로젝트 ID는 my-project와 같은 영숫자 문자열입니다. 폴더 및 조직 ID는 123456789012와 같은 숫자입니다.
  • RESOURCE_MANAGER_RESOURCE_TYPE: 범위에 따라 Organization, Folder 또는 Project입니다.
  • ROLE: 사용 권한이 부여되면 할당할 역할입니다.
  • TIME_IN_SECONDS: 부여가 지속되는 최대 시간(초)입니다.
  • REQUESTING_MEMBER: 사용 권한 부여를 요청할 수 있는 주 구성원입니다. allUsersallAuthenticatedUsers를 제외한 모든 주 구성원 유형이 지원됩니다.

  • APPROVING_EMAIL: 선택사항. 부여가 요청되었을 때 알림을 보낼 추가 이메일 주소입니다. 부여 승인 담당자와 연결된 Google ID에 자동으로 알림이 전송됩니다. 하지만 특히 직원 ID 제휴를 사용하는 경우 다른 이메일 주소 집합에 알림을 보내야 할 수 있습니다.
  • APPROVING_MEMBER: 사용 권한 요청을 승인할 수 있는 주 구성원입니다. 유효한 주 구성원 유형은 다음과 같습니다.

    • 사용자
    • 그룹
    • 도메인
    • 직원 풀 식별자
  • ADMIN_EMAIL_ADDRESS: 선택사항. 요청자에게 액세스 권한이 부여될 때 알림을 보낼 추가 이메일 주소입니다. 부여 승인 담당자와 연결된 Google ID에 자동으로 알림이 전송됩니다. 하지만 특히 직원 ID 제휴를 사용하는 경우 다른 이메일 주소 집합에 알림을 보내야 할 수 있습니다.
  • REQUESTER_EMAIL_ADDRESS: 선택사항. 이 사용 권한을 요청할 수 있을 때 알림을 보낼 추가 이메일 주소입니다. 부여 승인 요청자와 연결된 Google ID에 자동으로 알림이 전송됩니다. 하지만 특히 직원 ID 제휴를 사용하는 경우 다른 이메일 주소 집합에 알림을 보내야 할 수 있습니다.

다음 콘텐츠를 entitlement.yaml 파일에 저장합니다.

privilegedAccess:
  gcpIamAccess:
    resourceType: cloudresourcemanager.googleapis.com/RESOURCE_MANAGER_RESOURCE_TYPE
    resource: //cloudresourcemanager.googleapis.com/SCOPE
    roleBindings:
    - role: ROLE_1
    - role: ROLE_2
maxRequestDuration: TIME_IN_SECONDSs
eligibleUsers:
- principals:
  - REQUESTING_MEMBER_1
  - REQUESTING_MEMBER_2
approvalWorkflow:
  manualApprovals:
    requireApproverJustification: true
    steps:
    - approvalsNeeded: 1
      approverEmailRecipients:
      - APPROVING_EMAIL_1
      - APPROVING_EMAIL_2
      approvers:
      - principals:
        - APPROVING_MEMBER_1
        - APPROVING_MEMBER_2
requesterJustificationConfig:
  unstructured: {}
additionalNotificationTargets:
  adminEmailRecipients:
  - ADMIN_EMAIL_ADDRESS_1
  - ADMIN_EMAIL_ADDRESS_2
  requesterEmailRecipients:
  - REQUESTER_EMAIL_ADDRESS_1
  - REQUESTER_EMAIL_ADDRESS_2

다음 명령어를 실행합니다.

Linux, macOS 또는 Cloud Shell

gcloud beta pam entitlements create \
    ENTITLEMENT_ID \
    --entitlement-file=entitlement.yaml \
    --location=global \
    --RESOURCE_TYPE=RESOURCE_ID

Windows(PowerShell)

gcloud beta pam entitlements create `
    ENTITLEMENT_ID `
    --entitlement-file=entitlement.yaml `
    --location=global `
    --RESOURCE_TYPE=RESOURCE_ID

Windows(cmd.exe)

gcloud beta pam entitlements create ^
    ENTITLEMENT_ID ^
    --entitlement-file=entitlement.yaml ^
    --location=global ^
    --RESOURCE_TYPE=RESOURCE_ID

다음과 비슷한 응답이 표시됩니다.

Create request issued for: [ENTITLEMENT_ID]
Waiting for operation [projects/my-project/locations/global/operations/OPERATION_ID] to complete...done.
Created entitlement [ENTITLEMENT_ID].
additionalNotificationTargets: {}
approvalWorkflow:
  manualApprovals:
    requireApproverJustification: true
    steps:
    - approvalsNeeded: 1
      approvers:
      - principals:
        - user:alex@example.com
createTime: '2024-04-09T02:39:37.011866832Z'
eligibleUsers:
- principals:
  - user:bola@example.com
etag: 00000000000000000000000000000000000000000000000000000000000=
maxRequestDuration: 7200s
name: projects/my-project/locations/global/entitlements/ENTITLEMENT_ID
privilegedAccess:
  gcpIamAccess:
    resource: //cloudresourcemanager.googleapis.com/projects/my-project
    resourceType: cloudresourcemanager.googleapis.com/Project
    roleBindings:
    - role: roles/storage.admin
requesterJustificationConfig:
  unstructured: {}
state: AVAILABLE
updateTime: '2024-04-09T02:39:40.066770306Z'

REST

Privileged Access Manager API의 createEntitlement 메서드는 조직, 폴더 또는 프로젝트 수준에서 사용 권한을 만듭니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • SCOPE: 사용 권한을 만들 조직, 폴더 또는 프로젝트로, organizations/ORGANIZATION_ID, folders/FOLDER_ID 또는 projects/PROJECT_ID 형식입니다. 프로젝트 ID는 my-project와 같은 영숫자 문자열입니다. 폴더 및 조직 ID는 123456789012와 같은 숫자입니다.
  • ENTITLEMENT_ID: 만들 사용 권한 ID입니다. ID는 4~63자(영문 기준)여야 하며 [a-z0-9-] 문자를 사용해야 합니다. 첫 번째 글자는 문자여야 합니다.
  • REQUEST_ID: 선택사항. 0이 아닌 UUID여야 합니다. 요청 ID가 포함된 요청이 서버에 수신되는 경우 해당 ID를 사용하는 다른 요청이 최근 60분 내에 이미 완료되었는지 확인합니다. 그러면 새 요청이 무시됩니다.
  • RESOURCE_MANAGER_RESOURCE_TYPE: 범위에 따라 Organization, Folder 또는 Project입니다.
  • ROLE: 사용 권한이 부여되면 할당할 역할입니다.
  • TIME_IN_SECONDS: 부여가 지속되는 최대 시간(초)입니다.
  • REQUESTING_MEMBER: 사용 권한 부여를 요청할 수 있는 주 구성원입니다. allUsersallAuthenticatedUsers를 제외한 모든 주 구성원 유형이 지원됩니다.

  • APPROVING_MEMBER: 사용 권한 요청을 승인할 수 있는 주 구성원입니다. 유효한 주 구성원 유형은 다음과 같습니다.

    • 사용자
    • 그룹
    • 도메인
    • 직원 풀 식별자
  • APPROVING_EMAIL: 선택사항. 부여가 요청되었을 때 알림을 보낼 추가 이메일 주소입니다. 부여 승인 담당자와 연결된 Google ID에 자동으로 알림이 전송됩니다. 하지만 특히 직원 ID 제휴를 사용하는 경우 다른 이메일 주소 집합에 알림을 보내야 할 수 있습니다.
  • ADMIN_EMAIL_ADDRESS: 선택사항. 요청자에게 액세스 권한이 부여될 때 알림을 보낼 추가 이메일 주소입니다. 부여 승인 담당자와 연결된 Google ID에 자동으로 알림이 전송됩니다. 하지만 특히 직원 ID 제휴를 사용하는 경우 다른 이메일 주소 집합에 알림을 보내야 할 수 있습니다.
  • REQUESTER_EMAIL_ADDRESS: 선택사항. 이 사용 권한을 요청할 수 있을 때 알림을 보낼 추가 이메일 주소입니다. 부여 승인 요청자와 연결된 Google ID에 자동으로 알림이 전송됩니다. 하지만 특히 직원 ID 제휴를 사용하는 경우 다른 이메일 주소 집합에 알림을 보내야 할 수 있습니다.

HTTP 메서드 및 URL:

POST https://privilegedaccessmanager.googleapis.com/v1beta/SCOPE/locations/global/entitlements?entitlementId=ENTITLEMENT_ID&requestId=REQUEST_ID

JSON 요청 본문:

{
  "privilegedAccess": {
    "gcpIamAccess": {
      "resourceType": "cloudresourcemanager.googleapis.com/RESOURCE_MANAGER_RESOURCE_TYPE",
      "resource": "//cloudresourcemanager.googleapis.com/SCOPE",
      "roleBindings": [
        {
          "role": "ROLE_1"
        },
        {
          "role": "ROLE_2"
        }
      ]
    }
  },
  "maxRequestDuration": "TIME_IN_SECONDSs",
  "eligibleUsers": [
    {
      "principals": [
        "REQUESTING_MEMBER_1",
        "REQUESTING_MEMBER_2",
        ...
      ]
    }
  ],
  "approvalWorkflow": {
    "manualApprovals": {
      "requireApproverJustification": true,
      "steps": [
        {
          "approvers": [
            {
              "principals": [
                "APPROVING_MEMBER_1",
                "APPROVING_MEMBER_2",
                ...
              ]
            }
          ],
          "approvalsNeeded": 1,
          "approverEmailRecipients": [
            "APPROVING_EMAIL_1",
            "APPROVING_EMAIL_2",
            ...
          ]
        }
      ]
    }
  },
  "requesterJustificationConfig": {
    "unstructured": {
    }
  },
  "additionalNotificationTargets": {
    "adminEmailRecipients": [
      "ADMIN_EMAIL_ADDRESS_1",
      "ADMIN_EMAIL_ADDRESS_2",
      ...
    ],
    "requesterEmailRecipients": [
      "REQUESTER_EMAIL_ADDRESS_1",
      "REQUESTER_EMAIL_ADDRESS_2",
      ...
    ]
  }
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 비슷한 JSON 응답이 표시됩니다.

{
    "name": "projects/my-project/locations/global/operations/OPERATION_ID",
    "metadata": {
      "@type": "type.googleapis.com/google.cloud.privilegedaccessmanager.v1beta.OperationMetadata",
      "createTime": "2024-03-05T03:35:14.596739353Z",
      "target": "projects/my-project/locations/global/entitlements/ENTITLEMENT_ID",
      "verb": "create",
      "requestedCancellation": false,
      "apiVersion": "v1beta"
    },
    "done": false
}

만들기 작업의 진행 상황을 확인하려면 다음 엔드포인트에 GET 요청을 전송하면 됩니다.

https://privilegedaccessmanager.googleapis.com/v1beta/SCOPE/locations/global/operations/OPERATION_ID

다음 엔드포인트에 GET 요청을 전송하여 모든 작업을 나열합니다.

https://privilegedaccessmanager.googleapis.com/v1beta/SCOPE/locations/global/operations

Terraform

Terraform을 사용하여 사용 권한을 만들 수 있습니다. 자세한 내용은 Terraform 문서의 google_privileged_access_manager_entitlement를 참고하세요.

다음 단계