Hierarki izin IAM di Ruang Apigee

Halaman ini berlaku untuk Apigee dan Apigee hybrid.

Baca dokumentasi Apigee Edge.

Halaman ini menjelaskan cara hierarki izin Identity and Access Management (IAM) diterapkan ke resource Apigee API (proxy API, alur bersama, dan produk API) dan turunannya saat menggunakan Ruang Apigee.

Interaksi IAM dengan Apigee Spaces

Secara umum, kebijakan IAM yang mengatur akses ke resource diwariskan melalui Google Cloud hierarki resource. Kebijakan IAM spesifik yang berlaku untuk resource tertentu mencakup kedua hal berikut:

  • Kebijakan apa pun yang diterapkan langsung ke resource
  • Kebijakan apa pun yang diwarisi resource dari ancestor-nya

Hierarki resource dan izin di Apigee

Di Apigee, bagian atas hierarki resource adalah resource organisasi. Resource turunan organisasi mencakup proxy API, alur bersama, dan produk API. Saat Anda menggunakan Apigee tanpa Ruang, izin diterapkan ke project Google Cloud , yang berkorelasi langsung dengan resource organisasi Apigee. Akibatnya, kebijakan IAM yang mengatur akses ke proxy API, alur bersama, atau produk API tertentu mencakup kebijakan apa pun yang diwarisi dari organisasi, selain kebijakan apa pun yang diterapkan langsung ke resource tertentu.

Hierarki resource dan izin dengan Ruang

Saat Anda menggunakan Apigee dengan Ruang, resource Ruang akan ditambahkan ke hierarki. Pertimbangkan skenario saat organisasi Apigee memiliki tiga proxy API, proxy-a, proxy-b, dan proxy-c. Dalam contoh ini, proxy-b dan proxy-c masing-masing dikaitkan dengan space-red dan space-blue. Saat Anda mengaitkan resource API dengan Ruang, atribut space akan ditetapkan pada resource.

Saat Anda melakukan panggilan API untuk mendapatkan detail proxy-c, endpoint API Anda akan mencerminkan hierarki resource yang sebenarnya, dengan proxy API adalah turunan organisasi dengan atribut Ruang, seperti yang ditunjukkan dalam contoh berikut:

curl -X GET -H "Authorization: Bearer $TOKEN" "https://apigee.googleapis.com/v1/organizations/org1/apis/proxy-c"
{
  "metaData": {
    "createdAt": "1725665197737",
    "lastModifiedAt": "1725665462105",
    "subType": "Proxy"
  },
  "name": "proxy-c",
  "revision": [
    "1"
  ],
  "apiProxyType": "PROGRAMMABLE",
  "space": "space-blue"
}

Meskipun jalur ke resource API yang terkait dengan Ruang tetap sama, hierarki izin IAM yang efektif akan berubah. Dalam contoh skenario kami, pemeriksaan izin IAM akan berperilaku seolah-olah resource API adalah turunan Ruang. Akibatnya, kebijakan IAM yang berlaku untuk resource API mencakup kebijakan yang diwarisi dari Ruang, selain kebijakan apa pun yang diterapkan langsung ke Ruang, seperti yang ditunjukkan pada gambar berikut:

Hierarki IAM untuk Ruang
Gambar 1: Hierarki izin IAM yang efektif untuk resource API saat menggunakan Ruang

Pemeriksaan kebijakan IAM untuk resource Ruang

Seperti yang disebutkan di bagian sebelumnya, saat proxy API, alur bersama, dan produk API dikaitkan dengan Ruang, resource tersebut akan diperlakukan sebagai resource turunan Ruang selama pemeriksaan kebijakan IAM. Hierarki resource yang efektif ini berlaku untuk semua sub-turunan proxy API, alur bersama, dan produk API.

Misalnya, Atribut Produk API adalah resource turunan dari produk API. Untuk mencantumkan semua atribut produk API product-a di organisasi Apigee org1, yang dikaitkan dengan ruang Apigee space-blue, jalur resource yang sebenarnya adalah GET organizations/org1/apiproduct/product-a/attributes. Namun, jalur yang diperiksa untuk izin IAM adalah organizations/org1/spaces/space-blue/apiproduct/product-a/attributes.

Pemeriksaan kebijakan IAM untuk deployment

Resource Environment tidak dikaitkan dengan Ruang. Namun, beberapa API yang ada telah diperbarui untuk mengaktifkan akses terperinci ke deployment dan sesi debug untuk proxy API dan alur bersama.

Perubahan pada pemeriksaan izin IAM untuk operasi deployment berikut pada resource di Ruang dijelaskan di bawah:

Metode Pemeriksaan Izin IAM Ruang
organizations.deployments.list Tidak ada perubahan
organizations.apis.deployments.list apigee.deployments.list di organizations/$ORG/spaces/$SPACE/apis/$API
organizations.apis.revisions.deployments.list apigee.deployments.list di organizations/$ORG/spaces/$SPACE/apis/$API/revisions/$REV
organizations.environments.deployments.list Tidak ada perubahan
organizations.environments.deployments.get Tidak ada perubahan
organizations.environments.apis.deployments.list apigee.deployments.list di organizations/$ORG/environments/$ENV
ATAU

organizations/$ORG/spaces/$SPACE/apis/$API

organizations.environments.apis.revisions.deployments.get apigee.deployments.get di organizations/$ORG/environments/$ENV

ATAU

apigee.deployments.get di organizations/$ORG/spaces/$SPACE/apis/$API/revisions/$REV

organizations.environments.apis.revisions.deployments.deploy apigee.deployments.create pada organizations/$ORG/environments/$ENV

AND

apigee.proxyrevisions.deploy di organizations/$ORG/spaces/$SPACE/apis/$API/revisions/$REV

organizations.environments.apis.revisions.deployments.generateDeployChangeReport apigee.deployments.create pada organizations/$ORG/environments/$ENV

AND

apigee.proxyrevisions.deploy di organizations/$ORG/spaces/$SPACE/apis/$API/revisions/$REV

organizations.environments.apis.revisions.deployments.generateUndeployChangeReport apigee.deployments.delete di organizations/$ORG/environments/$ENV

AND

apigee.proxyrevisions.undeploy di organizations/$ORG/spaces/$SPACE/apis/$API/revisions/$REV

organizations.environments.apis.revisions.deployments.undeploy apigee.deployments.delete di organizations/$ORG/environments/$ENV

AND

apigee.proxyrevisions.undeploy di organizations/$ORG/spaces/$SPACE/apis/$API/revisions/$REV

organizations.environments.sharedflows.deployments.list apigee.deployments.list di organizations/$ORG/environments/$ENV
ATAU
apigee.deployments.list di
organizations/$ORG/spaces/$SPACE/sharedflows/$SF
organizations.environments.sharedflows.revisions.deployments.deploy apigee.deployments.create pada organizations/$ORG/environments/$ENV

AND

apigee.sharedflowrevisions.deploy di organizations/$ORG/spaces/$SPACE/sharedflow/$SF/revisions/$REV

organizations.environments.sharedflows.revisions.deployments.get apigee.deployments.get di organizations/$ORG/environments/$ENV

ATAU

apigee.deployments.get di

organizations/$ORG/spaces/$SPACE/sharedflows/$SF/revisions/$REV

organizations.environments.sharedflows.revisions.deployments.undeploy apigee.deployments.delete di organizations/$ORG/environments/$ENV

AND

apigee.sharedflowrevisions.undeploy di organizations/$ORG/spaces/$SPACE/sharedflow/$SF/revisions/$REV

organizations.sharedflows.deployments.list apigee.deployments.list di
organizations/$ORG/spaces/$SPACE/sharedflows/$SF
organizations.sharedflows.revisions.deployments.list apigee.deployments.list di
organizations/$ORG/spaces/$SPACE/sharedflows/$SF/revisions/$REV

Pemeriksaan izin untuk sesi debug

Jika proxy API dikaitkan dengan Ruang, pemeriksaan izin IAM untuk sesi debug proxy telah berubah, seperti yang dijelaskan dalam tabel berikut:

Metode Pemeriksaan Izin IAM Ruang
organizations.environments.apis.revisions.debugsessions.create apigee.tracesessions.create pada organizations/$ORG/spaces/$SPACE/apis/$API/revisions/$REV

AND

organizations/$ORG/environments/$ENV

organizations.environments.apis.revisions.debugsessions.get apigee.tracesessions.get di organizations/$ORG/environments/$ENV
DAN organizations/$ORG/spaces/$SPACE/apis/$API
organizations.environments.apis.revisions.debugsessions.deleteData apigee.tracesessions.delete di organizations/$ORG/environments/$ENV
DAN

apigee.tracesessions.delete di

organizations/$ORG/spaces/$SPACE/apis/$API

organizations.environments.apis.revisions.debugsessions.list apigee.tracesessions.list pada organizations/$ORG/environments/$ENV

ATAU

apigee.tracesessions.list pada organizations/$ORG/spaces/$SPACE/apis/$API/revisions/$REV

organizations.environments.apis.revisions.debugsessions.data.get apigee.tracesessions.get di organizations/$ORG/environments/$ENV

AND

apigee.tracesessions.get di organizations/$ORG/spaces/$SPACE/apis/$API/revisions/$REV

organizations.environments.apis.revisions.debugsessions.data.list apigee.tracesessions.get di organizations/$ORG/environments/$ENV

DAN

apigee.tracesessions.get di organizations/$ORG/spaces/$SPACE/apis/$API