Anda dapat mengontrol akses ke resource Vertex AI Feature Store (Lama) dengan menetapkan kebijakan IAM di berbagai level hierarki resource. Contoh:
IAM kebijakan level project berlaku untuk semua resource dalam sebuah project. Anda dapat menetapkan kebijakan tingkat project untuk memberikan izin kepada pengguna agar dapat membaca semua featurestore di project Anda.
Kebijakan IAM tingkat resource memungkinkan Anda menentukan pengguna mana yang dapat mengakses resource tertentu. Untuk sebagian pengguna, Anda dapat menetapkan kebijakan tingkat resource untuk memberikan izin tulis ke featurestore tertentu dalam project Anda.
Anda dapat menetapkan kebijakan Identity and Access Management (IAM) tingkat resource pada resource Vertex AI Feature Store (Lama) berikut:
Featurestore: Jika Anda menetapkan kebijakan Identity and Access Management di featurestore, kebijakan akan berlaku untuk featurestore dan semua jenis entity yang dibuat di featurestore tersebut.
Jenis entity: Jika Anda menetapkan kebijakan Identity and Access Management pada suatu jenis entity, kebijakan hanya berlaku untuk jenis entity dan featurestore tempat jenis entity dibuat.
Kebijakan IAM mencakup satu atau beberapa binding peran yang menentukan peran IAM mana yang terkait dengan akun utama tertentu. Peran adalah kumpulan izin yang Anda berikan kepada akun utama. Vertex AI menyediakan peran standar yang dapat digunakan dalam kebijakan Anda. Anda juga dapat membuat peran khusus sendiri.
Pertimbangan
Anda tidak dapat menetapkan kebijakan resource bersyarat. Misalnya, Anda tidak dapat membuat
kebijakan yang memberikan akses ke resource apa pun yang memiliki atau akan memiliki nama yang dimulai
dengan string tertentu seperti testing
.
Contoh kasus penggunaan
Sebagai contoh, bayangkan organisasi Anda memiliki dua kumpulan pengguna. Satu set akan mengelola infrastruktur inti Anda dalam peran admin DevOps. Set lainnya mengelola jenis entity tertentu dan fiturnya, seperti data engineer.
Admin DevOps mengelola featurestore dan jenis entity di level project. Saat data engineer meminta jenis entity baru, admin DevOps dapat membuat dan mendelegasikan kepemilikan jenis entity tersebut kepada engineer data. Data engineer dapat mengelola fitur dengan bebas dalam jenis entity yang mereka miliki, tetapi mereka tidak dapat beroperasi di featurestore atau jenis entity lainnya. Kontrol ini, misalnya, memungkinkan admin DevOps membatasi akses ke jenis entitas yang berisi informasi sensitif.
Dalam skenario ini, admin DevOps memiliki peran aiplatform.featurestoreAdmin
di level project. Kemudian, saat data engineer meminta
jenis entitas baru, administratormembuat jenis entitas baru dan kemudian menetapkanaiplatform.entityTypeOwner
peran kepada data engineer di level jenis
entity (sebagai kebijakan tingkat resource).
Mendapatkan kebijakan IAM
Anda dapat melihat kebijakan IAM saat ini pada featurestore atau jenis entity menggunakan konsol Google Cloud atau API.
UI web
- Di bagian Vertex AI pada Konsol Google Cloud, buka halaman Features.
- Pilih region dari menu drop-down Region.
- Di tabel fitur, pilih featurestore atau jenis entity dari kolom Featurestore atau Jenis entitas.
- Klik Izin.
- Untuk menampilkan izin tingkat resource, nonaktifkan Tampilkan izin yang diwarisi.
Akun utama yang memiliki akses ke resource yang dipilih dikelompokkan menurut peran.
- Luaskan peran untuk melihat akun utama yang ditetapkan ke peran tersebut.
REST
Untuk mendapatkan kebijakan IAM dari resource, kirim permintaan POST yang
menggunakan metode getIamPolicy
. Contoh berikut mendapatkan
kebijakan jenis entity.
Sebelum menggunakan salah satu data permintaan, buat pengganti berikut:
- LOCATION_ID: Region tempat featurestore berada, seperti
us-central1
. - PROJECT_ID: Project ID Anda.
- FEATURESTORE_ID: ID featurestore.
- ENTITY_TYPE_ID: ID jenis entity.
Metode HTTP dan URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:getIamPolicy
Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:
curl
Jalankan perintah berikut:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:getIamPolicy"
PowerShell
Jalankan perintah berikut:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:getIamPolicy" | Select-Object -Expand Content
Anda akan melihat respons JSON seperti berikut:
{ "version": 1, "etag": "BwXTmICm7mI", "bindings": [ { "role": "roles/aiplatform.entityTypeOwner", "members": [ "user:example@example.com" ] } ] }
Menetapkan kebijakan IAM
Anda dapat menetapkan kebijakan IAM pada featurestore atau jenis entity.
UI web
- Di bagian Vertex AI pada Konsol Google Cloud, buka halaman Features.
- Pilih region dari menu drop-down Region.
- Di tabel fitur, pilih featurestore atau jenis entity dari kolom Featurestore atau Jenis entitas.
- Klik Izin.
- Klik Tambahkan akun utama.
- Tentukan akun utama dan satu atau beberapa peran yang akan dikaitkan dengan akun utama.
- Klik Save.
REST
Untuk menetapkan kebijakan IAM pada resource, kirim permintaan POST yang
menggunakan metode setIamPolicy
. Contoh berikut menetapkan
kebijakan pada jenis entity.
Menetapkan kebijakan IAM akan menggantikan semua kebijakan yang sudah ada (perubahan tidak ditambahkan). Jika Anda ingin mengubah kebijakan resource yang ada, gunakan metode getIamPolicy
untuk mendapatkan kebijakan yang ada, lalu lakukan modifikasi. Sertakan kebijakan yang telah diubah beserta etag
dalam permintaan setIamPolicy
Anda.
Jika Anda menerima kode error 409
, berarti ada permintaan SetIamPolicy
serentak
yang memperbarui kebijakan. Buat GetIamPolicy
untuk mendapatkan etag kebijakan yang diperbarui, lalu coba lagi permintaan SetIamPolicy
dengan menyertakan etag baru.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- LOCATION_ID: Region tempat featurestore berada, seperti
us-central1
. - PROJECT_ID: Project ID Anda.
- FEATURESTORE_ID: ID featurestore.
- ENTITY_TYPE_ID: ID jenis entity.
- ROLE: Peran IAM yang mencakup izin yang akan diberikan, seperti
roles/aiplatform.featurestoreDataViewer
. - PRINCIPAL: Akun utama yang diberi izin peran, seperti
user:myuser@example.com
. - ETAG: Nilai string yang digunakan untuk mencegah pembaruan kebijakan secara bersamaan agar tidak menimpa satu sama lain. Nilai ini ditampilkan sebagai bagian dari respons
getIamPolicy
.
Metode HTTP dan URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:setIamPolicy
Isi JSON permintaan:
{ "policy": { "bindings": [ { "role": "ROLE", "members": [ "PRINCIPAL" ] }, ... ], "etag": "ETAG" } }
Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:
curl
Simpan isi permintaan dalam file bernama request.json
,
dan jalankan perintah berikut:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:setIamPolicy"
PowerShell
Simpan isi permintaan dalam file bernama request.json
,
dan jalankan perintah berikut:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:setIamPolicy" | Select-Object -Expand Content
Anda akan melihat respons JSON seperti berikut:
{ "version": 1, "etag": "BwXTmICm7mI", "bindings": [ { "role": "roles/aiplatform.entityTypeOwner", "members": [ "user:user1@example.com" ] }, { "role": "roles/aiplatform.featurestoreDataViewer", "members": [ "user:user2@example.com", "user:user3@example.com" ] }, { "role": "roles/aiplatform.featurestoreDataWriter", "members": [ "user:user4@example.com", ] } ] }
Memverifikasi izin IAM untuk resource
Anda dapat memverifikasi apakah pengguna yang saat ini diautentikasi memiliki izin IAM khusus untuk featurestore atau jenis entity.
REST
Untuk memastikan apakah pengguna memiliki izin IAM tertentu untuk suatu resource,
kirim permintaan POST yang menggunakan metode testIamPermissions
.
Contoh berikut memungkinkan Anda menguji apakah pengguna yang saat ini diautentikasi memiliki sekumpulan izin IAM
untuk jenis entity.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- LOCATION_ID: Region tempat featurestore berada, seperti
us-central1
. - PROJECT_ID: Project ID Anda.
- FEATURESTORE_ID: ID featurestore.
- ENTITY_TYPE_ID: ID jenis entity.
Metode HTTP dan URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:testIamPermissions -d
Isi JSON permintaan:
{ "permissions": [ "aiplatform.googleapis.com/entityTypes.get", "aiplatform.googleapis.com/entityTypes.readFeatureValues", "aiplatform.googleapis.com/entityTypes.writeFeatureValues" ] }
Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:
curl
Simpan isi permintaan dalam file bernama request.json
,
dan jalankan perintah berikut:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:testIamPermissions -d"
PowerShell
Simpan isi permintaan dalam file bernama request.json
,
dan jalankan perintah berikut:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:testIamPermissions -d" | Select-Object -Expand Content
{ "permissions": [ "aiplatform.googleapis.com/entityTypes.get", "aiplatform.googleapis.com/entityTypes.readFeatureValues", "aiplatform.googleapis.com/entityTypes.writeFeatureValues" ] }