Apigee 스페이스 만들기 및 관리

Apigee Edge 문서 보기

이 주제에서는 Apigee 조직에 Apigee 스페이스를 만들어 대규모로 Apigee API 리소스의 Identity and Access Management 정책을 관리하는 방법을 설명합니다.

이 가이드에서는 다음에 필요한 단계를 간략하게 설명합니다.

Apigee 스페이스를 사용하여 API 리소스를 관리하는 데 따르는 이점에 대한 자세한 내용은 Apigee 스페이스를 참조하세요.

시작하기 전에

스페이스를 시작하기 전에 다음 사항을 확인하세요.

  • Apigee 프로비저닝 사용할 Apigee 구독 또는 사용한 만큼만 지불 조직이 프로비저닝되었는지 확인합니다. Apigee를 프로비저닝하는 데 필요한 단계에 대한 자세한 내용은 프로비저닝 소개를 참조하세요.
  • 인증 사용자 인증 정보를 가져옵니다. 명령줄에서 스페이스를 만들고 관리하는 명령어를 실행하기 전에 다음 명령어를 사용하여 gcloud 인증 사용자 인증 정보를 가져옵니다.
    export TOKEN=$(gcloud auth print-access-token)

필수 역할 및 권한

Make sure that you have the following role or roles on the project: Apigee > Apigee Organization Admin

Check for the roles

  1. In the Google Cloud console, go to the IAM page.

    Go to IAM
  2. Select the project.
  3. In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.

  4. For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.

Grant the roles

  1. In the Google Cloud console, go to the IAM page.

    IAM으로 이동
  2. 프로젝트를 선택합니다.
  3. 액세스 권한 부여를 클릭합니다.
  4. 새 주 구성원 필드에 사용자 식별자를 입력합니다. 일반적으로 Google 계정의 이메일 주소입니다.

  5. 역할 선택 목록에서 역할을 선택합니다.
  6. 역할을 추가로 부여하려면 다른 역할 추가를 클릭하고 각 역할을 추가합니다.
  7. 저장을 클릭합니다.

스페이스 만들기

이 태스크를 수행하려면 apigee.spaces.create 권한이 필요합니다. 이 권한은 Apigee Organization Admin 역할에 포함되어 있습니다.

Apigee 조직에서 스페이스를 만들려면 다음 명령어를 사용합니다.

curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
    "https://apigee.googleapis.com/v1/organizations/ORG_NAME/spaces" \
    --data-raw '{
       "name":"SPACE_NAME"
    }'

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

  • ORG_NAME는 Apigee 조직의 이름입니다.
  • SPACE_NAME은 만들려는 스페이스의 이름입니다.

예를 들어 다음 명령어는 acme 조직에 red라는 스페이스를 만듭니다.

curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
    https://apigee.googleapis.com/v1/organizations/acme/spaces \
    --data-raw '{
       "name":"red",
    }'

스페이스에서 구성원 및 역할 관리

스페이스를 만든 후에는 팀 구성원을 스페이스에 추가하고 스페이스에서 API 리소스를 만들고 관리하는 데 필요한 IAM 역할을 할당할 수 있습니다. Apigee 사용자는 적절한 권한이 부여된 팀 구성원이 있는 스페이스에서만 리소스를 만들고 관리할 수 있습니다. IAM 액세스 제어는 스페이스 수준에서 부여되므로 조직 구성원은 스페이스에 특별히 추가되지 않는 한 스페이스 API 리소스에 액세스하거나 관리할 수 없습니다. 스페이스 리소스를 관리하는 데 필요한 IAM 역할 및 권한에 관한 개요는 필요한 역할 및 권한을 참조하세요.

스페이스에 조직 구성원 추가

조직 구성원이 스페이스에 추가되면 두 개의 인수를 사용하는 스페이스에 대해 IAM 정책 바인딩이 생성됩니다.

  • 스페이스 구성원 목록
  • 구성원에게 부여된 역할 또는 역할 목록

이 태스크를 수행하려면 apigee.spaces.setIamPolicy 권한이 필요합니다. 이 권한은 Apigee Organization Admin 역할에 포함되어 있습니다.

조직 구성원을 스페이스에 추가하고 IAM 역할을 할당하려면 다음 명령어를 사용합니다.

curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-type: application/json" \
    "https://apigee.googleapis.com/v1/organizations/ORG_NAME/spaces/SPACE_NAME:setIamPolicy" -d \
      '{
        "policy":{
          "bindings":[
            {
              "members": ["user:USER_EMAIL"],
              "role": "roles/IAM_ROLE"
            }
          ]
        }
      }'

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

  • ORG_NAME은 Apigee 조직의 이름입니다.
  • SPACE_NAME은 스페이스 이름입니다.
  • USER_EMAIL은 스페이스에 추가할 사용자의 이메일 주소입니다.
  • IAM_ROLE은 사용자에게 스페이스 구성원으로 할당할 IAM 역할의 이름입니다.

예를 들어 다음 명령어는 acme 조직의 red 스페이스에 my-email@acme.com 사용자를 추가하고 IAM 역할 apigee.apiAdminV2를 부여합니다.

curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-type: application/json" \
    "https://apigee.googleapis.com/v1/organizations/acme/spaces/red:setIamPolicy" -d \
      '{ 
        "policy":{
          "bindings":[
            {
              "members": ["user:my-email@acme.com"],
              "role": "roles/apigee.apiAdminV2"
            }
          ]
        }
      }'

스페이스의 IAM 정책을 업데이트하여 스페이스 구성원에게 추가 역할과 권한을 추가할 수 있습니다. 스페이스에 대한 IAM 정책을 업데이트하려면 수정된 원하는 역할 및 권한 목록을 사용하여 이 섹션에 설명된 setIamPolicy 메서드를 사용합니다. 이렇게 하면 역할과 권한이 적절하게 조정된 스페이스의 새 IAM 정책이 생성됩니다.

스페이스에 팀 구성원 추가하기

또는 스페이스에 팀 구성원을 추가하고 IAM 역할을 할당할 수 있습니다. 팀 구성원을 스페이스에 추가하고 IAM 역할을 할당하려면 다음 명령어를 사용합니다.

curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-type: application/json" \
   "https://apigee.googleapis.com/v1/organizations/ORG_NAME/spaces/SPACE_NAME:setIamPolicy" -d \
     '{
       "policy":{
         "bindings":[
           {
             "members": ["group:GROUP_EMAIL"],
             "role": "roles/IAM_ROLE"
           }
         ]
       }
     }'

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

  • ORG_NAME은 Apigee 조직의 이름입니다.
  • SPACE_NAME은 스페이스 이름입니다.
  • GROUP_EMAIL은 스페이스에 추가할 그룹의 이메일 주소입니다.
  • IAM_ROLE은 스페이스 구성원으로 팀에 할당할 IAM 역할의 이름입니다.

예를 들어 다음 명령어는 acme-team@acme.com 그룹을 acme 조직의 red 스페이스에 추가하고 그룹에 apigee.apiAdminV2 역할을 부여합니다.

curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-type: application/json" \
   "https://apigee.googleapis.com/v1/organizations/acme/spaces/red:setIamPolicy" -d \
     '{ 
       "policy":{
         "bindings":[
           {
             "members": ["group:red-team@acme.com"],
             "role": "roles/apigee.apiAdminV2"
           }
         ]
       }
     }'

스페이스에 조직 구성원 추가에 설명된 대로 IAM 역할 apigee.apiAdminV2에는 스페이스 리소스를 관리하는 데 필요한 많은 권한이 포함되어 있습니다. 하지만 특정 태스크를 수행하려면 사용자에게 추가 역할을 부여해야 할 수 있습니다.

스페이스 IAM 정책 할당 확인

이 태스크를 수행하려면 apigee.spaces.getIamPolicy 권한이 필요합니다. 이 권한은 Apigee Organization Admin 역할에 포함되어 있습니다.

스페이스에 IAM 정책이 올바르게 설정되어 있는지 확인하려면 다음 명령어를 사용합니다.

curl -X GET -H "Authorization: Bearer $TOKEN" \
    "https://apigee.googleapis.com/v1/organizations/ORG_NAME/spaces/SPACE_NAME:getIamPolicy"

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

  • ORG_NAME은 Apigee 조직의 이름입니다.
  • SPACE_NAME은 스페이스 이름입니다.

예를 들어 다음 명령어는 acme 조직의 red 스페이스에 대한 IAM 정책이 올바르게 설정되어 있는지 확인하는 데 사용됩니다.

curl -X GET -H "Authorization: Bearer $TOKEN" \
    "https://apigee.googleapis.com/v1/organizations/acme/spaces/red:getIamPolicy"

명령어의 출력은 스페이스에 대한 현재 IAM 정책을 반환하며 다음과 같이 표시되어야 합니다.

{
  "version": "0",
  "bindings": [
    {
      "role": "roles/apigee.apiAdminV2",
      "members": [
        "group:red-team@acme.com"
      ]
    }
  ]
}

이 예시에서 스페이스의 IAM 정책은 스페이스 구성원(이 경우 red-team@acme.com 그룹의 구성원)에게 apigee.apiAdminV2 역할을 부여합니다.

red 팀 구성원만 red 스페이스에 대한 액세스 권한을 부여받은 조직 구성원입니다. 즉, red 팀 구성원만 red 스페이스에서 API 리소스를 만들고 관리할 수 있습니다. team-blue@acme.com과 같은 다른 조직 팀 구성원이 team-blue@acme.com 스페이스에서 생성된 API 프록시에 액세스하려고 하면 다음 오류가 표시됩니다.

{
  "error": {
    "code": 403,
    "message": "Permission denied on resource \"organizations\/acme\/apis\/proxy-1\" (or it may not exist).",
    "status": "PERMISSION_DENIED"
  }
}

스페이스에서 구성원 삭제하기

스페이스에서 구성원 또는 구성원 그룹을 삭제하려면 수정된 구성원 또는 그룹 목록으로 스페이스의 새 IAM 정책을 설정해야 합니다. setIamPolicy 메서드를 사용하면 역할과 구성원이 적절하게 조정된 스페이스의 새 IAM 정책이 생성됩니다.

예를 들어 blue 팀 스페이스의 구성원을 업데이트하려면 먼저 다음 명령어를 사용하여 현재 IAM 정책을 확인할 수 있습니다.

curl -X GET -H "Authorization: Bearer $TOKEN" \
  "https://apigee.googleapis.com/v1/organizations/acme/spaces/blue:getIamPolicy"

명령어의 출력은 스페이스에 대한 현재 IAM 정책을 반환하며 다음과 같이 표시되어야 합니다.

{
  "version": "0",
  "bindings": [
    {
      "role": "roles/apigee.apiAdminV2",
      "members": [
        "group: blue-team@acme.com", 
        "users: user-a@acme.com, user-b@acme.com, user-c@acme.com"
      ]
    }
  ]
}

스페이스에서 user-b@acme.com을 삭제하려면 다음 명령어를 사용합니다.

curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-type: application/json" \
  "https://apigee.googleapis.com/v1/organizations/acme/spaces/blue:setIamPolicy" -d \
    '{ 
      "policy":{
        "bindings":[
          {
            "members": [
              "group:blue-team@acme.com",
              "users: user-a@acme.com, user-c@acme.com"
            ]  
            "role": "roles/apigee.apiAdminV2"
          }
        ]
      }
    }'

스페이스의 새 IAM 정책에는 더 이상 user-b@acme.com이 포함되지 않습니다.

스페이스에 포함된 그룹에서 구성원을 삭제하려면 먼저 그룹에서 구성원을 삭제한 다음 setIamPolicy 명령어를 다시 실행하여 스페이스의 IAM 정책을 그룹 이메일 별칭의 올바른 멤버십으로 업데이트합니다.

조직의 모든 스페이스 나열

이 태스크를 수행하려면 apigee.spaces.list 권한이 필요합니다. 이 권한은 Apigee Organization Admin 역할에 포함되어 있습니다.

Apigee 조직의 모든 스페이스를 나열하려면 다음 명령어를 사용합니다.

curl -X GET -H "Authorization: Bearer $TOKEN" \
    "https://apigee.googleapis.com/v1/organizations/ORG_NAME/spaces"

여기서 ORG_NAME은 Apigee 조직 이름입니다.

예를 들어 다음 명령어는 acme 조직의 모든 스페이스를 나열합니다.

curl -X GET -H "Authorization: Bearer $TOKEN" \
    "https://apigee.googleapis.com/v1/organizations/acme/spaces"

이 명령어는 다음과 같은 결과를 반환합니다.

  {
    "spaces": [
        {
            "name": "red",
            "createTime": "2024-08-02T23:26:03.001512Z",
            "updateTime": "2024-08-02T23:26:03.001512Z"
        },
        {
            "name": "blue",
            "createTime": "2024-08-02T00:34:54.159331Z",
            "updateTime": "2024-08-02T00:34:54.159331Z"
      }
      ]
  }

스페이스 세부정보 가져오기

이 태스크를 수행하려면 apigee.spaces.get 권한이 필요합니다. 이 권한은 Apigee Organization Admin 역할에 포함되어 있습니다.

다음 명령어를 사용하여 스페이스 세부정보를 가져옵니다.

curl -X GET -H "Authorization: Bearer $TOKEN" \
    "https://apigee.googleapis.com/v1/organizations/ORG_NAME/spaces/SPACE_NAME"

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

  • ORG_NAME은 Apigee 조직의 이름입니다.
  • SPACE_NAME은 스페이스 이름입니다.

예를 들어 다음 명령어는 acme 조직의 red 스페이스에 대한 세부정보를 가져옵니다.

curl -X GET -H "Authorization: Bearer $TOKEN" \
    "https://apigee.googleapis.com/v1/organizations/acme/spaces/red"

이 명령어는 다음과 같은 결과를 반환합니다.

  {
      "name": "red",
      "createTime": "2024-08-02T23:26:03.001512Z",
      "updateTime": "2024-08-02T23:26:03.001512Z"
  }

스페이스 업데이트

이 태스크를 수행하려면 apigee.spaces.update 권한이 필요합니다. 이 권한은 Apigee Organization Admin 역할에 포함되어 있습니다.

Apigee 조직의 스페이스를 업데이트하려면 다음 명령어를 사용합니다.

curl -X PATCH -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
    "https://apigee.googleapis.com/v1/organizations/ORG_NAME/spaces/SPACE_NAME" \
      --data-raw '{
        "displayName":"DISPLAY_NAME"
      }'

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

  • ORG_NAME은 Apigee 조직의 이름입니다.
  • SPACE_NAME은 스페이스 이름입니다.
  • DISPLAY_NAME은 스페이스의 새 표시 이름입니다.

예를 들어 다음 명령어는 acme 조직에서 red 스페이스의 표시 이름을 업데이트합니다.

curl -X PATCH -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
    "https://apigee.googleapis.com/v1/organizations/acme/spaces/red" -d \
    '{
      "displayName": "Red team space"
    }'

스페이스 삭제

이 태스크를 수행하려면 apigee.spaces.delete 권한이 필요합니다. 이 권한은 Apigee Organization Admin 역할에 포함되어 있습니다. 스페이스를 삭제하기 전에 스페이스의 모든 리소스도 삭제되었는지 확인합니다.

Apigee 조직에서 스페이스를 삭제하려면 다음 명령어를 사용합니다.

curl -X DELETE -H "Authorization: Bearer $TOKEN" \
    "https://apigee.googleapis.com/v1/organizations/ORG_NAME/spaces/SPACE_NAME"

예를 들어 다음 명령어는 acme 조직의 red 스페이스를 삭제합니다.

curl -X DELETE -H "Authorization: Bearer $TOKEN" \
    "https://apigee.googleapis.com/v1/organizations/acme/spaces/red"

활성 리소스가 아직 연결된 스페이스를 삭제하려고 하면 다음 오류가 표시됩니다.

{
  "error": {
    "code": 400,
    "message": "Space \"red\" has resources associated with it. Please delete the resources before deleting the space.",
    "status": "FAILED_PRECONDITION"
  }
}

이 오류를 해결하려면 스페이스의 리소스를 삭제하거나 이동한 후 스페이스를 삭제해 보세요.

다음 단계