Apigee Space の作成と管理

このページは ApigeeApigee ハイブリッドに適用されます。

Apigee Edge のドキュメントを表示する。

このページでは、Apigee 組織に Apigee Spaces を作成して、Apigee API リソースの Identity and Access Management(IAM)ポリシーを大規模に管理する方法について説明します。

このガイドでは、次の手順について説明します。

Apigee Space を使用して API リソースを管理するメリットについては、Apigee Space をご覧ください。

始める前に

Space の使用を開始する前に、次の点にご注意ください。

  • Apigee をプロビジョニングします。使用する Apigee サブスクリプションまたは従量課金制の組織がプロビジョニングされていることを確認します。Apigee のプロビジョニングに必要な手順の詳細については、プロビジョニングの概要をご覧ください。
  • 認証情報を取得します。コマンドラインで Space を作成、管理するためのコマンドを実行する前に、次のコマンドを使用して 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. [新しいプリンシパル] フィールドに、ユーザー ID を入力します。 これは通常、Google アカウントのメールアドレスです。

  5. [ロールを選択] リストでロールを選択します。
  6. 追加のロールを付与するには、 [別のロールを追加] をクリックして各ロールを追加します。
  7. [保存] をクリックします。
  8. Space を作成する

    このタスクを実行するには、apigee.spaces.create 権限が必要です。この権限は、Apigee Organization Admin のロールに含まれています。

    Apigee 組織に Space を作成するには、次のコマンドを使用します。

    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",
           "displayName":"DISPLAY_NAME",
        }'

    ここで

    • ORG_NAME は実際の Apigee 組織の名前です。
    • SPACE_NAME は、Space の名前と ID です。
    • DISPLAY_NAME は、Cloud コンソールの Apigee UI に表示される Space の名前です。表示名が指定されていない場合、Space 名が表示名として使用されます。

    たとえば、次のコマンドは、acme 組織に red という名前の Space を作成します。

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

    組織に Space を作成すると、Cloud コンソールの Apigee UI を使用する組織のメンバーは、UI で API リソースを作成するときに、使用可能なパラメータとして Space が表示されます。また、UI で API プロキシ、API プロダクト、共有フローのリストを表示すると、その Space に割り当てられた API リソースの属性として Space が表示されます。

    Space。

    Space のメンバーとロールを管理する

    Space を作成したら、チームメンバーを Space に追加し、Space で API リソースを作成して管理するために必要な IAM ロールを割り当てることができます。Apigee ユーザーは、適切な権限が付与されているチームメンバーである Space でのみ、リソースを作成および管理できます。IAM アクセス制御は Space レベルで付与されるため、組織のメンバーは、Space に明示的に追加されない限り、Space に属している Apigee API リソースにアクセスすることや、管理することはできません。Space リソースの管理に必要な IAM ロールと権限の概要については、Space リソースの作成と管理をご覧ください。

    組織のメンバーを Space に追加する

    組織のメンバーが Space に追加されると、2 つの引数を取る Space の IAM ポリシー バインディングが作成されます。

    • Space のメンバーのリスト
    • メンバーに付与されたロール、またはメンバーに付与されたロールのリスト

    このタスクを実行するには、apigee.spaces.setIamPolicy 権限が必要です。この権限は、Apigee Organization Admin のロールに含まれています。

    組織のメンバーを Space に追加して 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 は、Space の名前です。
    • USER_EMAIL は、Space に追加するユーザーのメールアドレスです。
    • IAM_ROLE は、Space メンバーとしてユーザーに割り当てる IAM ロールの名前です。

    たとえば次のコマンドは、my-email@acme.com ユーザーを acme 組織の red Space に追加し、IAM ロール apigee.spaceContentEditor を付与します。

    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.spaceContentEditor"
                }
              ]
            }
          }'

    Space のメンバーにロールと権限を追加するには、スペースの IAM ポリシーを更新します。Space の IAM ポリシーを更新するには、このセクションで説明する setIamPolicy メソッドと、修正した目的のロールのリストと権限のリストを使用します。これにより、Space の新しい IAM ポリシーが作成され、ロールと権限が適切に調整されます。

    チームのメンバーを Space に追加する

    メンバーのチームを Space に追加し、1 つ以上の IAM ロールを割り当てることもできます。メンバーのチームを Space に追加して 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 は、Space の名前です。
    • GROUP_EMAIL は、Space に追加するグループのメールアドレスです。
    • IAM_ROLE は、Space メンバーとしてチームに割り当てる IAM ロールの名前です。

    たとえば、次のコマンドは、acme-team@acme.com グループを acme 組織の red Space に追加し、apigee.spaceContentEditor ロールをグループに付与します。

    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.spaceContentEditor"
               }
             ]
           }
         }'

    組織のメンバーを Space に追加するで説明したように、IAM ロール apigee.spaceContentEditor には、Space リソースの管理に必要な多くの権限が含まれています。ただし、特定のタスクを実行するためにユーザーに追加のロールを付与する必要がある場合があります。

    Space の IAM ポリシーの割り当てを確認する

    このタスクを実行するには、apigee.spaces.getIamPolicy 権限が必要です。この権限は、Apigee Organization Admin のロールに含まれています。

    Space に 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 は、Space の名前です。

    たとえば、acme 組織の red Space に IAM ポリシーが正しく設定されていることを確認するには、次のコマンドを使用します。

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

    このコマンドは、Space の現在の IAM ポリシーを返します。出力は次のようになります。

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

    この例では、Space の IAM ポリシーにより、Space のメンバー(この場合は red-team@acme.com グループのメンバー)に apigee.spaceContentEditor ロールが付与されます。

    red チームのメンバーのみが red Space へのアクセスを許可されています。つまり、red Space で API リソースを作成、管理できるのは red チームのメンバーだけです。team-blue@acme.com など、別の組織チームのメンバーが red Space で作成された API プロキシにアクセスしようとすると、次のエラーが表示されます。

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

    Space からメンバーを削除する

    Space からメンバーまたはメンバーのグループを削除するには、修正したメンバーまたはグループのリストを使用して Space の新しい IAM ポリシーを設定する必要があります。setIamPolicy メソッドを使用すると、スペースの新しい IAM ポリシーが作成され、ロールとメンバーが適切に調整されます。

    たとえば、blue チームの Space のメンバーを更新するには、まず次のコマンドを使用して現在の IAM ポリシーを確認します。

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

    このコマンドは、Space の現在の IAM ポリシーを返します。出力は次のようになります。

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

    Space から 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.spaceContentEditor"
              }
            ]
          }
        }'

    Space の新しい IAM ポリシーには user-b@acme.com が含まれなくなります。

    Space に含まれるグループからメンバーを削除するには、まずグループからメンバーを削除してから、setIamPolicy コマンドを再実行して、グループのメール エイリアスの正しいメンバーで Space の IAM ポリシーを更新します。

    組織内のすべての Space を一覧表示する

    このタスクを実行するには、apigee.spaces.list 権限が必要です。この権限は、Apigee Organization Admin のロールに含まれています。

    Apigee 組織内のすべての Space を一覧表示するには、次のコマンドを使用します。

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

    ここで、ORG_NAME は Apigee 組織の名前です。

    たとえば、次のコマンドは acme 組織内のすべての Space を一覧表示します。

    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"
          }
          ]
      }

    Space の詳細を取得する

    このタスクを実行するには、apigee.spaces.get 権限が必要です。この権限は、Apigee Organization Admin のロールに含まれています。

    次のコマンドを使用して、Space の詳細を取得します。

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

    ここで

    • ORG_NAME は、Apigee 組織の名前です。
    • SPACE_NAME は、Space の名前です。

    たとえば、次のコマンドは、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"
      }

    Space を更新する

    このタスクを実行するには、apigee.spaces.update 権限が必要です。この権限は、Apigee Organization Admin のロールに含まれています。

    Apigee 組織の Space を更新するには、次のコマンドを使用します。

    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 は、Space の名前と ID です。
    • DISPLAY_NAME は、Space の新しい表示名です。

    たとえば、次のコマンドは、acme 組織の red Space の表示名を更新します。

    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"
        }'

    Space を削除する

    このタスクを実行するには、apigee.spaces.delete 権限が必要です。この権限は、Apigee Organization Admin のロールに含まれています。Space を削除する前に、Space 内のすべてのリソースが削除されていることを確認してください。

    Apigee 組織の Space を削除するには、次のコマンドを使用します。

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

    たとえば、次のコマンドは acme 組織の red Space を削除します。

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

    アクティブなリソースがまだ関連付けられている Space を削除しようとすると、次のエラーが表示されます。

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

    このエラーを解決するには、Space を削除する前に Space 内のリソースを削除または移動してください。

    次のステップ