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 dibutuhkan.
Sebelum memulai
Enable the IAM and Recommender APIs.
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 cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Peran bawaan ini berisi izin yang diperlukan untuk mengelola rekomendasi peran tingkat set data. Untuk melihat izin yang benar-benar diperlukan, luaskan 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 mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.
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 mencantumkan rekomendasi tingkat set data, jalankan perintah gcloud recommender recommendations list
, yang hanya memfilter rekomendasi set data BigQuery:
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
) di set data dataset-1
.
Namun, peran ini belum digunakan dalam 90 hari
terakhir. Akibatnya, rekomendasi peran menyarankan agar Anda mencabut peran:
[ { "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 rekomendasi 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. Pasangan nilai kunci yang dipisahkan koma yang berisi metadata pilihan Anda tentang rekomendasi. Misalnya,--state-metadata=reviewedBy=alice,priority=high
. Metadata menggantikan kolomstateInfo.stateMetadata
dalam rekomendasi.
Jika perintah berhasil, respons akan menampilkan rekomendasi dalam status
CLAIMED
, seperti yang ditunjukkan dalam contoh berikut. Agar lebih jelas, contoh ini menghapus sebagian besar kolom:... "priority": "P1", "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET", "stateInfo": { "state": "CLAIMED" } ...
-
Dapatkan kebijakan izin untuk set data, lalu ubah dan tetapkan kebijakan izin agar mencerminkan 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 rekomendasi 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. Pasangan nilai kunci yang dipisahkan koma yang berisi metadata pilihan Anda tentang rekomendasi. Misalnya,--state-metadata=reviewedBy=alice,priority=high
. Metadata 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 diautentikasi
dan menetapkan variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS
.
Tinjau rekomendasi Anda:
Untuk mencantumkan 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 maksimum hasil 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 tempat permintaan sebelumnya berakhir. 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
dengan peran Editor di project `my-project`
(projectEditor:my-project
) memiliki peran BigQuery Data Editor
(roles/bigquery.dataEditor
) di set data dataset-1
.
Namun, peran ini belum digunakan dalam 90 hari terakhir. Oleh karena itu, rekomendasi peran menyarankan agar Anda mencabut peran:
{ "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
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 rekomendasi adalahfb927dc1-9695-4436-0000-f0f285007c0f
.ETAG
: Nilai kolometag
dalam rekomendasi, seperti"dd0686e7136a4cbb"
. Gunakan backslash untuk meng-escape tanda kutip, misalnya,"\"df7308cca9719dcc\""
.STATE_METADATA
: Opsional. Objek yang berisi key-value pair dengan metadata pilihan Anda tentang rekomendasi. Contoh,{"reviewedBy": "alice", "priority": "high"}
. Metadata 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:
Respons menampilkan rekomendasi dalam status
CLAIMED
, seperti yang ditunjukkan dalam contoh berikut. Agar lebih jelas, contoh ini menghilangkan sebagian besar kolom:... "stateInfo": { "state": "CLAIMED" }, "etag": "\"7caf4103d7669e12\"", "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET", ...
Dapatkan kebijakan izin untuk project, lalu ubah kebijakan izin agar mencerminkan 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
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 rekomendasi adalahfb927dc1-9695-4436-0000-f0f285007c0f
.ETAG
: Nilai kolometag
dalam rekomendasi, seperti"dd0686e7136a4cbb"
. Gunakan backslash untuk meng-escape tanda kutip, misalnya,"\"df7308cca9719dcc\""
.STATE_METADATA
: Opsional. Objek yang berisi key-value pair dengan metadata pilihan Anda tentang rekomendasi. Contoh,{"reviewedBy": "alice", "priority": "high"}
. Metadata 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:
Respons menampilkan rekomendasi dalam status
SUCCEEDED
, seperti yang ditunjukkan dalam 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
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 rekomendasi adalahfb927dc1-9695-4436-0000-f0f285007c0f
.ETAG
: Nilai kolometag
dalam rekomendasi, seperti"dd0686e7136a4cbb"
. Gunakan backslash untuk meng-escape tanda kutip, misalnya,"\"df7308cca9719dcc\""
.STATE_METADATA
: Opsional. Objek yang berisi key-value pair dengan metadata pilihan Anda tentang rekomendasi. Contoh,{"reviewedBy": "alice", "priority": "high"}
. Metadata 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:
Respons menampilkan rekomendasi dalam status
FAILED
, seperti yang ditunjukkan dalam 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 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.
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
membacaprojects/123456789012/locations/us/insightTypes/google.iam.policy.Insight/insights/7849add9-73c0-419e-b169-42b3671173fb
, ID insight-nya 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 mengizinkan insight kebijakan untuk set data BigQuery.