Halaman ini menjelaskan cara melihat, memahami, dan menerapkan rekomendasi peran IAM untuk set data BigQuery. Rekomendasi peran membantu Anda menerapkan prinsip hak istimewa terendah dengan memastikan bahwa akun utama hanya memiliki izin yang benar-benar diperlukan.
Sebelum memulai
Aktifkan API IAM and Recommender.
Pahami rekomendasi peran.
Peran IAM yang diperlukan
Untuk mendapatkan izin yang Anda perlukan guna mengelola rekomendasi peran tingkat set data, minta administrator untuk memberi Anda peran IAM berikut:
-
Role Viewer (
roles/iam.roleViewer
) di project Anda -
IAM Recommender Admin (
roles/recommender.iamAdmin
) di project Anda -
BigQuery Data Owner (
roles/bigquery.dataOwner
) di set data Anda
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses.
Peran bawaan ini berisi izin yang diperlukan untuk mengelola rekomendasi peran tingkat set data. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:
Izin yang diperlukan
Izin berikut diperlukan untuk mengelola rekomendasi peran tingkat set data:
-
Untuk melihat rekomendasi:
-
iam.roles.get
di project Anda -
iam.roles.list
di project Anda -
recommender.iamPolicyRecommendations.get
di project Anda -
recommender.iamPolicyRecommendations.list
di project Anda -
recommender.iamPolicyInsights.get
di project Anda -
recommender.iamPolicyInsights.list
di project Anda -
bigquery.datasets.getIamPolicy
di set data Anda
-
-
Untuk menerapkan dan menolak rekomendasi:
-
recommender.iamPolicyRecommendations.update
di project Anda -
bigquery.datasets.setIamPolicy
di set data Anda
-
Anda mung juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaanlainnya.
Meninjau dan menerapkan rekomendasi
Anda dapat meninjau dan menerapkan rekomendasi peran tingkat set data dengan Google Cloud CLI dan Recommender API.
gcloud
Tinjau rekomendasi Anda:
Untuk menampilkan daftar rekomendasi tingkat set data, jalankan perintah gcloud recommender recommendations list
, dengan memfilter rekomendasi set data BigQuery saja:
gcloud recommender recommendations list \
--location=LOCATION \
--recommender=google.iam.policy.Recommender \
--project=PROJECT_ID \
--format=json \
--filter="recommenderSubtype:REMOVE_ROLE_BIGQUERY_DATASET OR recommenderSubtype:REPLACE_ROLE_BIGQUERY_DATASET"
Ganti nilai berikut:
LOCATION
: Region tempat set data Cloud Storage Anda berada—misalnya,us
atauus-central1
.PROJECT_ID
: ID project Google Cloud yang berisi set data BigQuery Anda. Project ID adalah string alfanumerik, sepertimy-project
.
Responsnya mirip dengan contoh berikut. Dalam contoh ini, semua pengguna dengan peran Editor di project my-project
(projectEditor:my-project
) memiliki peran BigQuery Data Editor (roles/bigquery.dataEditor
) pada set data dataset-1
.
Namun, peran ini belum digunakan dalam 90 hari terakhir. Akibatnya, rekomendasi peran menyarankan agar
Anda mencabut peran tersebut:
[ { "associatedInsights": [ { "insight": "projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/984eccca-0241-472f-baab-2557dd0d7282" } ], "content": { "operationGroups": [ { "operations": [ { "action": "remove", "path": "/iamPolicy/bindings/*/members/*", "pathFilters": { "/iamPolicy/bindings/*/condition/expression": "", "/iamPolicy/bindings/*/members/*": "projectEditor:my-project", "/iamPolicy/bindings/*/role": "roles/bigquery.dataEditor" }, "resource": "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1", "resourceType": "bigquery.googleapis.com/Dataset" } ] } ], "overview": { "addedRoles": [], "member": "projectEditor:my-project", "minimumObservationPeriodInDays": "0", "removedRole": "roles/bigquery.dataEditor", "resource": "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1" } }, "description": "This role has not been used during the observation window.", "etag": "\"3b123bc08d028128\"", "lastRefreshTime": "2024-02-04T08:00:00Z", "name": "projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/0e9831fe-6810-476b-b14d-2b64bda17288", "primaryImpact": { "category": "SECURITY", "securityProjection": { "details": { "revokedIamPermissionsCount": 37 } } }, "priority": "P4", "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET", "stateInfo": { "state": "ACTIVE" }, "targetResources": [ "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1" ] }, { "associatedInsights": [ { "insight": "projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/9d11057e-9c71-410f-ad55-fc82d87761d0" } ], "content": { "operationGroups": [ { "operations": [ { "action": "remove", "path": "/iamPolicy/bindings/*/members/*", "pathFilters": { "/iamPolicy/bindings/*/condition/expression": "", "/iamPolicy/bindings/*/members/*": "user:alicexz@google.com", "/iamPolicy/bindings/*/role": "roles/bigquery.dataOwner" }, "resource": "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1", "resourceType": "bigquery.googleapis.com/Dataset" } ] } ], "overview": { "addedRoles": [], "member": "user:alicexz@google.com", "minimumObservationPeriodInDays": "0", "removedRole": "roles/bigquery.dataOwner", "resource": "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1" } }, "description": "This role has not been used during the observation window.", "etag": "\"1da285f7aa6438f1\"", "lastRefreshTime": "2024-02-04T08:00:00Z", "name": "projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/56013294-cf81-402a-8cde-25489545777c", "primaryImpact": { "category": "SECURITY", "securityProjection": { "details": { "revokedIamPermissionsCount": 64 } } }, "priority": "P4", "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET", "stateInfo": { "state": "ACTIVE" }, "targetResources": [ "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1" ] } ]
Tinjau setiap rekomendasi dengan cermat, dan pertimbangkan bagaimana rekomendasi tersebut akan mengubah akses akun utama ke resource Google Cloud. Untuk mempelajari cara meninjau rekomendasi dari gcloud CLI, lihat Meninjau rekomendasi di halaman ini.
Untuk menerapkan rekomendasi:
Gunakan perintah
gcloud recommender recommendations mark-claimed
untuk mengubah status rekomendasi menjadiCLAIMED,
yang mencegah rekomendasi berubah saat Anda menerapkannya:gcloud recommender recommendations mark-claimed \ RECOMMENDATION_ID \ --location=LOCATION \ --recommender=google.iam.policy.Recommender \ --project=PROJECT_ID \ --format=FORMAT \ --etag=ETAG \ --state-metadata=STATE_METADATA
Ganti nilai berikut:
-
RECOMMENDATION_ID
: ID unik untuk rekomendasi. Nilai ini muncul di akhir kolomname
dalam rekomendasi. Misalnya, jika kolomname
adalahprojects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f
, ID rekomendasinya adalahfb927dc1-9695-4436-0000-f0f285007c0f
. -
LOCATION
: Region tempat set data BigQuery Anda berada—misalnya,us
atauus-central1
. -
PROJECT_ID
: ID project Google Cloud yang berisi set data BigQuery Anda. Project ID adalah string alfanumerik, sepertimy-project
. -
FORMAT
: Format respons. Gunakanjson
atauyaml
. -
ETAG
: Nilai kolometag
dalam rekomendasi, seperti"dd0686e7136a4cbb"
. Perhatikan bahwa nilai ini dapat menyertakan tanda kutip. -
STATE_METADATA
: Opsional. Key-value pair yang dipisahkan koma yang berisi pilihan metadata Anda tentang rekomendasi. Misalnya,--state-metadata=reviewedBy=alice,priority=high
. Metadata tersebut menggantikan kolomstateInfo.stateMetadata
dalam rekomendasi.
Jika perintah berhasil, respons akan menampilkan rekomendasi dalam status
CLAIMED
, seperti yang ditunjukkan pada contoh berikut. Agar lebih jelas, contoh ini menghapus sebagian besar kolom:... "priority": "P1", "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET", "stateInfo": { "state": "CLAIMED" } ...
-
Dapatkan kebijakan izinkan untuk set data, lalu ubah dan tetapkan kebijakan izin agar sesuai dengan rekomendasi.
Perbarui status rekomendasi menjadi
SUCCEEDED
, jika Anda dapat menerapkan rekomendasi, atauFAILED
, jika Anda tidak dapat menerapkan rekomendasi:gcloud recommender recommendations COMMAND \ RECOMMENDATION_ID \ --location=LOCATION \ --recommender=google.iam.policy.Recommender \ --project=PROJECT_ID \ --format=FORMAT \ --etag=ETAG \ --state-metadata=STATE_METADATA
Ganti nilai berikut:
-
COMMAND
: Gunakanmark-succeeded
jika Anda dapat menerapkan rekomendasi, ataumark-failed
jika Anda tidak dapat menerapkan rekomendasi. -
RECOMMENDATION_ID
: ID unik untuk rekomendasi. Nilai ini muncul di akhir kolomname
dalam rekomendasi. Misalnya, jika kolomname
adalahprojects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f
, ID rekomendasinya adalahfb927dc1-9695-4436-0000-f0f285007c0f
. -
LOCATION
: Region tempat set data BigQuery Anda berada—misalnya,us
atauus-central1
. -
PROJECT_ID
: ID project Google Cloud yang berisi set data BigQuery Anda. Project ID adalah string alfanumerik, sepertimy-project
. -
FORMAT
: Format respons. Gunakanjson
atauyaml
. -
ETAG
: Nilai kolometag
dalam rekomendasi, seperti"dd0686e7136a4cbb"
. Perhatikan bahwa nilai ini dapat menyertakan tanda kutip. -
STATE_METADATA
: Opsional. Key-value pair yang dipisahkan koma yang berisi pilihan metadata Anda tentang rekomendasi. Misalnya,--state-metadata=reviewedBy=alice,priority=high
. Metadata tersebut menggantikan kolomstateInfo.stateMetadata
dalam rekomendasi.
Misalnya, jika Anda menandai rekomendasi sebagai berhasil, respons akan menampilkan rekomendasi dalam status
SUCCEEDED
. Agar lebih jelas, contoh ini menghilangkan sebagian besar kolom:... "priority": "P1", "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET", "stateInfo": { "state": "SUCCEEDED" } ...
-
REST
Petunjuk ini mengasumsikan bahwa Anda telah mengautentikasi dan menetapkan variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS
.
Tinjau rekomendasi Anda:
Untuk menampilkan semua rekomendasi yang tersedia untuk set data BigQuery Anda, gunakan metode recommendations.list
Recommender API.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
PROJECT_ID
: ID project Google Cloud yang berisi set data BigQuery Anda. Project ID adalah string alfanumerik, sepertimy-project
.LOCATION
: Region tempat set data BigQuery Anda berada—misalnya,us
atauus-central1
.-
PAGE_SIZE
: Opsional. Jumlah hasil maksimum yang akan ditampilkan dari permintaan ini. Jika tidak ditentukan, server akan menentukan jumlah hasil yang akan ditampilkan. Jika jumlah rekomendasi lebih besar dari ukuran halaman, respons akan berisi token penomoran halaman yang dapat Anda gunakan untuk mengambil halaman hasil berikutnya. -
PAGE_TOKEN
: Opsional. Token penomoran halaman yang ditampilkan dalam respons sebelumnya dari metode ini. Jika ditentukan, daftar rekomendasi akan dimulai dari akhir permintaan sebelumnya. PROJECT_ID
: Project ID Google Cloud Anda Project ID adalah string alfanumerik, sepertimy-project
.
Metode HTTP dan URL:
GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/recommenders/google.iam.policy.Recommender/recommendations?filter=recommenderSubtype%20%3D%20REMOVE_ROLE_BIGQUERY_DATASET%20OR%20recommenderSubtype%20%3D%20REPLACE_ROLE_BIGQUERY_DATASET&pageSize=PAGE_SIZE&pageToken=PAGE_TOKEN
Untuk mengirim permintaan, perluas salah satu opsi berikut:
Responsnya mirip dengan contoh berikut. Dalam contoh ini, semua pengguna
yang memiliki peran Editor di project `my-project`
(projectEditor:my-project
) memiliki peran BigQuery Data Editor
(roles/bigquery.dataEditor
) pada set data dataset-1
.
Namun, peran ini belum digunakan dalam 90 hari terakhir. Akibatnya, rekomendasi peran menyarankan agar
Anda mencabut peran tersebut:
{ "recommendations": [ { "name": "projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/0e9831fe-6810-476b-b14d-2b64bda17288", "description": "This role has not been used during the observation window.", "lastRefreshTime": "2024-02-02T08:00:00Z", "primaryImpact": { "category": "SECURITY", "securityProjection": { "details": { "revokedIamPermissionsCount": 37 } } }, "content": { "operationGroups": [ { "operations": [ { "action": "remove", "resourceType": "bigquery.googleapis.com/Dataset", "resource": "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1", "path": "/iamPolicy/bindings/*/members/*", "pathFilters": { "/iamPolicy/bindings/*/condition/expression": "", "/iamPolicy/bindings/*/members/*": "projectEditor:my-project", "/iamPolicy/bindings/*/role": "roles/bigquery.dataEditor" } } ] } ], "overview": { "resource": "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1", "member": "projectEditor:my-project", "removedRole": "roles/bigquery.dataEditor", "addedRoles": [], "minimumObservationPeriodInDays": "0" } }, "stateInfo": { "state": "ACTIVE" }, "etag": "\"d008ad3780bad5e0\"", "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET", "associatedInsights": [ { "insight": "projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/984eccca-0241-472f-baab-2557dd0d7282" } ], "priority": "P4", "targetResources": [ "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1" ] } ] }
Tinjau setiap rekomendasi dengan cermat, dan pertimbangkan bagaimana rekomendasi tersebut akan mengubah akses akun utama ke resource Google Cloud. Untuk mempelajari cara meninjau rekomendasi dari REST API, lihat Meninjau rekomendasi di halaman ini.
Untuk menerapkan rekomendasi:
Tandai rekomendasi sebagai
CLAIMED
:Untuk menandai rekomendasi sebagai
CLAIMED
, yang mencegah rekomendasi berubah saat Anda menerapkannya, gunakan metoderecommendations.markClaimed
dari Recommender API.Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
PROJECT_ID
: ID project Google Cloud yang berisi set data BigQuery Anda. Project ID adalah string alfanumerik, sepertimy-project
.LOCATION
: Region tempat set data BigQuery Anda berada—misalnya,us
atauus-central1
.RECOMMENDATION_ID
: ID unik untuk rekomendasi. Nilai ini muncul di akhir kolomname
dalam rekomendasi. Misalnya, jika kolomname
adalahprojects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f
, ID rekomendasinya adalahfb927dc1-9695-4436-0000-f0f285007c0f
.ETAG
: Nilai kolometag
dalam rekomendasi, seperti"dd0686e7136a4cbb"
. Gunakan garis miring terbalik untuk menghindari tanda kutip, misalnya,"\"df7308cca9719dcc\""
.STATE_METADATA
: Opsional. Objek yang berisi key-value pair dengan pilihan metadata Anda terkait rekomendasi. Misalnya,{"reviewedBy": "alice", "priority": "high"}
. Metadata ini menggantikan kolomstateInfo.stateMetadata
dalam rekomendasi.
Metode HTTP dan URL:
POST https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/recommenders/google.iam.policy.Recommender/recommendations/RECOMMENDATION_ID:markClaimed
Meminta isi JSON:
{ "etag": "ETAG", "stateMetadata": { "STATE_METADATA" } }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Responsnya menunjukkan rekomendasi dalam status
CLAIMED
, seperti ditunjukkan pada contoh berikut. Agar lebih jelas, contoh ini menghilangkan sebagian besar kolom:... "stateInfo": { "state": "CLAIMED" }, "etag": "\"7caf4103d7669e12\"", "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET", ...
Mendapatkan kebijakan izinkan untuk project, lalu ubah kebijakan izin agar sesuai dengan rekomendasi.
Perbarui status rekomendasi menjadi
SUCCEEDED
, jika Anda dapat menerapkan rekomendasi, atauFAILED
, jika Anda tidak dapat menerapkan rekomendasi:SUCCEEDED
Untuk menandai rekomendasi sebagai
SUCCEEDED
, yang menunjukkan bahwa Anda dapat menerapkannya, gunakan metoderecommendations.markSucceeded
dari Recommender API.Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
PROJECT_ID
: ID project Google Cloud yang berisi set data BigQuery Anda. Project ID adalah string alfanumerik, sepertimy-project
.LOCATION
: Region tempat set data BigQuery Anda berada—misalnya,us
atauus-central1
.RECOMMENDATION_ID
: ID unik untuk rekomendasi. Nilai ini muncul di akhir kolomname
dalam rekomendasi. Misalnya, jika kolomname
adalahprojects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f
, ID rekomendasinya adalahfb927dc1-9695-4436-0000-f0f285007c0f
.ETAG
: Nilai kolometag
dalam rekomendasi, seperti"dd0686e7136a4cbb"
. Gunakan garis miring terbalik untuk menghindari tanda kutip, misalnya,"\"df7308cca9719dcc\""
.STATE_METADATA
: Opsional. Objek yang berisi key-value pair dengan pilihan metadata Anda terkait rekomendasi. Misalnya,{"reviewedBy": "alice", "priority": "high"}
. Metadata ini menggantikan kolomstateInfo.stateMetadata
dalam rekomendasi.
Metode HTTP dan URL:
POST https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/recommenders/google.iam.policy.Recommender/recommendations/RECOMMENDATION_ID:markSucceeded
Meminta isi JSON:
{ "etag": "ETAG", "stateMetadata": { "STATE_METADATA" } }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Responsnya menunjukkan rekomendasi dalam status
SUCCEEDED
, seperti ditunjukkan pada contoh berikut. Agar lebih jelas, contoh ini menghilangkan sebagian besar kolom:... "stateInfo": { "state": "SUCCEEDED" }, "etag": "\"7caf4103d7669e12\"", "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET", ...
FAILED
Untuk menandai rekomendasi sebagai
FAILED
, yang menunjukkan bahwa Anda tidak dapat menerapkannya, gunakan metoderecommendations.markFailed
dari Recommender API.Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
PROJECT_ID
: ID project Google Cloud yang berisi set data BigQuery Anda. Project ID adalah string alfanumerik, sepertimy-project
.LOCATION
: Region tempat set data BigQuery Anda berada—misalnya,us
atauus-central1
.RECOMMENDATION_ID
: ID unik untuk rekomendasi. Nilai ini muncul di akhir kolomname
dalam rekomendasi. Misalnya, jika kolomname
adalahprojects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f
, ID rekomendasinya adalahfb927dc1-9695-4436-0000-f0f285007c0f
.ETAG
: Nilai kolometag
dalam rekomendasi, seperti"dd0686e7136a4cbb"
. Gunakan garis miring terbalik untuk menghindari tanda kutip, misalnya,"\"df7308cca9719dcc\""
.STATE_METADATA
: Opsional. Objek yang berisi key-value pair dengan pilihan metadata Anda terkait rekomendasi. Misalnya,{"reviewedBy": "alice", "priority": "high"}
. Metadata ini menggantikan kolomstateInfo.stateMetadata
dalam rekomendasi.
Metode HTTP dan URL:
POST https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/recommenders/google.iam.policy.Recommender/recommendations/RECOMMENDATION_ID:markFailed
Meminta isi JSON:
{ "etag": "ETAG", "stateMetadata": { "STATE_METADATA" } }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Responsnya menunjukkan rekomendasi dalam status
FAILED
, seperti ditunjukkan pada contoh berikut. Agar lebih jelas, contoh ini menghilangkan sebagian besar kolom:... "stateInfo": { "state": "FAILED" }, "etag": "\"7caf4103d7669e12\"", "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET", ...
Memahami rekomendasi
Setiap rekomendasi menyertakan informasi untuk membantu Anda memahami alasan rekomendasi tersebut dibuat.
Untuk mengetahui detail tentang kolom rekomendasi, lihat referensi Recommendation
.
Untuk melihat penggunaan izin yang menjadi dasar rekomendasi ini, lihat
insight kebijakan yang terkait dengan rekomendasi tersebut.
Insight ini tercantum di kolom associatedInsights
. Untuk melihat insight kebijakan yang terkait dengan rekomendasi, lakukan tindakan berikut:
- Salin ID insight terkait. ID adalah semuanya setelah
insights/
di kolominsight
. Misalnya, jika kolominsight
bertuliskanprojects/123456789012/locations/us/insightTypes/google.iam.policy.Insight/insights/7849add9-73c0-419e-b169-42b3671173fb
, ID insight adalah7849add9-73c0-419e-b169-42b3671173fb
. - Ikuti petunjuk untuk mendapatkan insight kebijakan, menggunakan ID insight yang Anda salin.
Langkah selanjutnya
- Pelajari Pemberi Rekomendasi lebih lanjut.
- Pelajari cara menggunakan insight kebijakan izinkan untuk set data BigQuery.