本頁說明如何查看、瞭解及套用 Cloud Storage 值區的 IAM 角色建議。角色建議可確保主體只會有實際所需的權限,協助您強制執行最低權限原則。
事前準備
- Enable the IAM and Recommender APIs. - Roles required to enable APIs - To enable APIs, you need the Service Usage Admin IAM role ( - roles/serviceusage.serviceUsageAdmin), which contains the- serviceusage.services.enablepermission. Learn how to grant roles.
- 請確認您已在機構或專案層級啟用Security Command Center 的進階或企業方案。詳情請參閱帳單問題。 
- 瞭解角色建議。 
- 設定驗證方法。 - Select the tab for how you plan to use the samples on this page: - Console- When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication. - gcloud- In the Google Cloud console, activate Cloud Shell. - At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize. - REST- 如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。 - 安裝 Google Cloud CLI。 安裝完成後,執行下列指令初始化 Google Cloud CLI: - gcloud init- 如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。 - 詳情請參閱 Google Cloud 驗證說明文件中的「Authenticate for using REST」。 - 必要 IAM 角色- 如要取得管理 bucket 層級角色建議所需的權限,請要求管理員授予您專案的下列 IAM 角色: - 如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。 - 這些預先定義角色具備管理 bucket 層級角色建議所需的權限。如要查看確切的必要權限,請展開「必要權限」部分: - 所需權限- 如要管理 bucket 層級的角色建議,您必須具備下列權限: - 
                如要查看建議:
                - 
                      iam.roles.get
- 
                      iam.roles.list
- 
                      recommender.iamPolicyRecommendations.get
- 
                      recommender.iamPolicyRecommendations.list
- 
                      recommender.iamPolicyInsights.get
- 
                      recommender.iamPolicyInsights.list
- 
                      storage.buckets.getIamPolicy
 
- 
                      
- 
                如何套用及略過建議:
                - 
                      recommender.iamPolicyRecommendations.update
- 
                      storage.buckets.setIamPolicy
 
- 
                      
 - 查看及套用建議- 您可以使用 Google Cloud CLI 和 Recommender API,查看及套用 bucket 層級的角色建議。 - 控制台- 在 Google Cloud 控制台,前往「Cloud Storage bucket」頁面。 
- 找出「安全性洞察資料」欄。如果沒有看到這個資料欄,請按一下「資料欄顯示選項」圖示 ,然後選取「安全性深入分析」。 - 「安全性洞察」欄會顯示值區的所有政策洞察摘要。每個摘要都會指出該值區中所有角色獲得的過多權限總數。    - 如果系統提供建議來解決任何洞察資料, Google Cloud 控制台會顯示「有可用的建議」圖示。 
- 如有建議可供查看,請按一下政策洞察摘要,開啟「安全性建議」窗格。這個窗格會列出 bucket 中具備角色的所有主體、這些主體的角色,以及與這些角色相關聯的任何政策洞察資料。    
- 按一下「有可用的建議」 圖示,即可查看建議詳細資料。 - 如果建議是更換角色,角色建議一律會提供一組可套用的預先定義角色。 - 在某些情況下,角色建議也會建議在專案層級建立新的自訂角色。如有自訂角色建議, Google Cloud 控制台預設會顯示。如要切換至預先定義角色建議,請按一下「查看建議的預先定義角色」。 
- 請仔細查看建議,並確認您瞭解這項建議會如何變更主體對 Google Cloud 資源的存取權。除非是服務代理人的建議,否則建議絕不會提高主體的存取權層級。詳情請參閱「角色建議的產生方式」。 - 如要瞭解如何在控制台中查看建議,請參閱本頁的「查看建議」一節。 
- 選用:如果建議是建立自訂角色,請視需要更新「名稱」、「說明」、「ID」和「角色發布階段」。 - 如要為自訂角色新增權限,請按一下「新增權限」。 - 如要從自訂角色移除權限,請取消勾選要移除的每項權限。 
- 根據建議採取行動。 - 如要套用建議,請按一下「套用」或「建立並套用」。如果之後 90 天內改變心意,請使用最佳化建議記錄還原選擇。 - 如要關閉最佳化建議,請按一下「關閉」,然後確認選擇。 只要最佳化建議仍有效,您就能還原已略過的建議。 
- 重複上述步驟,直到查看完所有建議為止。 
 - gcloud- 查看建議: - 如要列出 bucket 層級的建議,請執行 - gcloud recommender recommendations list指令,只篩選 Cloud Storage bucket 建議:- gcloud recommender recommendations list \ --location=LOCATION \ --recommender=google.iam.policy.Recommender \ --project=PROJECT_ID \ --format=json \ --filter="recommenderSubtype:REMOVE_ROLE_STORAGE_BUCKET OR recommenderSubtype:REPLACE_ROLE_STORAGE_BUCKET"- 替換下列值: - LOCATION:Cloud Storage bucket 所在的區域,例如- us或- us-central1。
- PROJECT_ID:包含 Cloud Storage 值區的 Google Cloud 專案 ID。專案 ID 為英數字元字串,例如- my-project。
 - 回應類似下列範例。在本例中,所有已通過驗證的使用者 ( - allAuthenticatedUsers) 在 bucket- mybucket上都具有 Storage Legacy Object Reader 角色 (- roles/storage.legacyObjectReader)。不過,這個角色在過去 90 天內沒有使用過。因此,角色建議會建議您撤銷角色:- [ { "associatedInsights": [ { "insight": "projects/123456789012/locations/us/insightTypes/google.iam.policy.Insight/insights/7849add9-73c0-419e-b169-42b3671173fb" } ], "associatedResourceNames": [ "//storage.googleapis.com/my-bucket" ], "content": { "operationGroups": [ { "operations": [ { "action": "remove", "path": "/iamPolicy/bindings/*/members/*", "pathFilters": { "/iamPolicy/bindings/*/condition/expression": "", "/iamPolicy/bindings/*/members/*": "allAuthenticatedUsers", "/iamPolicy/bindings/*/role": "roles/storage.legacyObjectReader" }, "resource": "//storage.googleapis.com/my-bucket", "resourceType": "storage.googleapis.com/Bucket" } ] } ] }, "description": "This role has not been used during the observation window.", "etag": "\"7caf4103d7669e12\"", "lastRefreshTime": "2022-05-24T07:00:00Z", "name": "projects/123456789012/locations/us/recommenders/google.iam.policy.Recommender/recommendations/fbc885b7-f0a8-47e6-90fe-6141aa2c4257", "primaryImpact": { "category": "SECURITY", "securityProjection": { "details": { "revokedIamPermissionsCount": 1 } } }, "priority": "P1", "recommenderSubtype": "REMOVE_ROLE_STORAGE_BUCKET", "stateInfo": { "state": "ACTIVE" } } ] - 請仔細查看每項建議,並考量這些建議會如何改變主體對 Google Cloud 資源的存取權。如要瞭解如何透過 gcloud CLI 查看建議,請參閱本頁的「查看建議」一節。 - 如何套用最佳化建議: - 使用 - gcloud recommender recommendations mark-claimed指令將建議的狀態變更為- CLAIMED,,這樣在套用建議時,系統就不會變更建議:- 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- 替換下列值: - 
  RECOMMENDATION_ID:建議的專屬 ID。這項值會顯示在建議的name欄位結尾。舉例來說,如果name欄位為projects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f,則建議 ID 為fb927dc1-9695-4436-0000-f0f285007c0f。
- 
  LOCATION:Cloud Storage bucket 所在的區域,例如us或us-central1。
- 
  PROJECT_ID:包含 Cloud Storage 值區的 Google Cloud 專案 ID。專案 ID 為英數字串,例如my-project。
- 
  FORMAT:回應格式。使用json或yaml。
- 
  ETAG:建議中etag欄位的值,例如"dd0686e7136a4cbb"。請注意,這個值可以包含引號。
- 
  STATE_METADATA:選用。以半形逗號分隔的鍵/值組合,內含您選擇的建議中繼資料。例如:--state-metadata=reviewedBy=alice,priority=high。中繼資料會取代建議中的stateInfo.stateMetadata欄位。
 - 如果指令成功執行,回應會顯示建議處於 - CLAIMED狀態,如下列範例所示。為求明確,範例省略了大部分的欄位:- ... "priority": "P1", "recommenderSubtype": "REMOVE_ROLE_STORAGE_BUCKET", "stateInfo": { "state": "CLAIMED" } ... 
- 
  
- 取得 bucket 的允許政策,然後修改並設定允許政策,以反映建議。 
- 如果可以套用建議,請將建議狀態更新為 - SUCCEEDED;如果無法套用建議,請更新為- FAILED:- gcloud recommender recommendations COMMAND \ RECOMMENDATION_ID \ --location=LOCATION \ --recommender=google.iam.policy.Recommender \ --project=PROJECT_ID \ --format=FORMAT \ --etag=ETAG \ --state-metadata=STATE_METADATA- 替換下列值: - 
    COMMAND:如果已套用建議,請使用mark-succeeded;如果無法套用建議,請使用mark-failed。
- 
  RECOMMENDATION_ID:建議的專屬 ID。這項值會顯示在建議的name欄位結尾。舉例來說,如果name欄位為projects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f,則建議 ID 為fb927dc1-9695-4436-0000-f0f285007c0f。
- 
  LOCATION:Cloud Storage bucket 所在的區域,例如us或us-central1。
- 
  PROJECT_ID:包含 Cloud Storage 值區的 Google Cloud 專案 ID。專案 ID 為英數字串,例如my-project。
- 
  FORMAT:回應格式。使用json或yaml。
- 
  ETAG:建議中etag欄位的值,例如"dd0686e7136a4cbb"。請注意,這個值可以包含引號。
- 
  STATE_METADATA:選用。以半形逗號分隔的鍵/值組合,內含您選擇的建議中繼資料。例如:--state-metadata=reviewedBy=alice,priority=high。中繼資料會取代建議中的stateInfo.stateMetadata欄位。
 - 舉例來說,如果您將建議標示為成功,回應就會顯示建議處於 - SUCCEEDED狀態。為求明確,這個範例省略了大部分的欄位:- ... "priority": "P1", "recommenderSubtype": "REMOVE_ROLE_STORAGE_BUCKET", "stateInfo": { "state": "SUCCEEDED" } ... 
- 
    
 - REST- 查看建議: - 如要列出 Cloud Storage 值區的所有可用建議,請使用 Recommender API 的 - recommendations.list方法。- 使用任何要求資料之前,請先替換以下項目: - PROJECT_ID:包含 Cloud Storage 值區的Google Cloud 專案 ID。專案 ID 為英數字元字串,例如- my-project。
- LOCATION:Cloud Storage bucket 所在的區域,例如- us或- us-central1。
- 
    PAGE_SIZE:選用。這項要求傳回的結果數上限。如未指定,伺服器會決定要傳回的結果數量。如果建議數量大於頁面大小,回應會包含分頁符記,可用於擷取下一頁結果。
- 
    PAGE_TOKEN:選用。這個方法先前回應中傳回的分頁符記。如果指定,建議清單會從上一個要求結束的位置開始。
- PROJECT_ID:您的 Google Cloud 專案 ID。專案 ID 為英數字串,例如- my-project。
 - HTTP 方法和網址: - GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/recommenders/google.iam.policy.Recommender/recommendations?filter=recommenderSubtype%20%3D%20REMOVE_ROLE_STORAGE_BUCKET%20OR%20recommenderSubtype%20%3D%20REPLACE_ROLE_STORAGE_BUCKET&pageSize=PAGE_SIZE&pageToken=PAGE_TOKEN - 如要傳送要求,請展開以下其中一個選項: - 回應類似下列範例。在本範例中,所有已通過驗證的使用者 ( - allAuthenticatedUsers) 在 bucket- mybucket上都具有 Storage 舊版物件讀取者角色 (- roles/storage.legacyObjectReader)。不過,這個角色在過去 90 天內沒有使用過。因此,角色建議會建議您撤銷角色:- { "recommendations": [ "name": "projects/123456789012/locations/us/recommenders/google.iam.policy.Recommender/recommendations/fbc885b7-f0a8-47e6-90fe-6141aa2c4257", "description": "This role has not been used during the observation window.", "lastRefreshTime": "2022-05-24T07:00:00Z", "primaryImpact": { "category": "SECURITY", "securityProjection": { "details": { "revokedIamPermissionsCount": 1 } } }, "content": { "operationGroups": [ { "operations": [ { "action": "remove", "resourceType": "storage.googleapis.com/Bucket", "resource": "//storage.googleapis.com/my-bucket", "path": "/iamPolicy/bindings/*/members/*", "pathFilters": { "/iamPolicy/bindings/*/condition/expression": "", "/iamPolicy/bindings/*/members/*": "allAuthenticatedUsers", "/iamPolicy/bindings/*/role": "roles/storage.legacyObjectReader" } } ] } ] }, "stateInfo": { "state": "ACTIVE" }, "etag": "\"7caf4103d7669e12\"", "recommenderSubtype": "REMOVE_ROLE_STORAGE_BUCKET", "associatedInsights": [ { "insight": "projects/123456789012/locations/us/insightTypes/google.iam.policy.Insight/insights/7849add9-73c0-419e-b169-42b3671173fb" } ], "priority": "P1" ] }- 請仔細查看每項建議,並考量這些建議會如何改變主體對 Google Cloud 資源的存取權。如要瞭解如何透過 REST API 查看建議,請參閱本頁的「查看建議」一節。 - 如何套用最佳化建議: - 將建議標示為 - CLAIMED:- 如要將建議標示為 - CLAIMED,防止建議在您套用時變更,請使用 Recommender API 的- recommendations.markClaimed方法。- 使用任何要求資料之前,請先替換以下項目: - PROJECT_ID:包含 Cloud Storage 值區的Google Cloud 專案 ID。專案 ID 為英數字元字串,例如- my-project。
- LOCATION:Cloud Storage 值區所在的區域,例如- us或- us-central1。
- RECOMMENDATION_ID:建議的專屬 ID。這個值會顯示在建議的- name欄位結尾。舉例來說,如果- name欄位為- projects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f,則建議 ID 為- fb927dc1-9695-4436-0000-f0f285007c0f。
- ETAG:建議中- etag欄位的值,例如- "dd0686e7136a4cbb"。使用反斜線逸出引號,例如- "\"df7308cca9719dcc\""。
- STATE_METADATA:選用。這個物件包含鍵/值組合,其中含有您選擇的建議中繼資料。例如:- {"reviewedBy": "alice", "priority": "high"}。中繼資料會取代建議中的- stateInfo.stateMetadata欄位。
 - HTTP 方法和網址: - POST https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/recommenders/google.iam.policy.Recommender/recommendations/RECOMMENDATION_ID:markClaimed - JSON 要求主體: - { "etag": "ETAG", "stateMetadata": { "STATE_METADATA" } }- 如要傳送要求,請展開以下其中一個選項: - 回應會以 - CLAIMED狀態顯示建議,如下列範例所示。 為求明確,這個範例省略了大部分的欄位:- ... "stateInfo": { "state": "CLAIMED" }, "etag": "\"7caf4103d7669e12\"", "recommenderSubtype": "REMOVE_ROLE_STORAGE_BUCKET", ...
- 如果可以套用建議,請將建議狀態更新為 - SUCCEEDED;如果無法套用建議,請更新為- FAILED:- SUCCEEDED- 如要將建議標示為 - SUCCEEDED,表示您已套用建議,請使用 Recommender API 的- recommendations.markSucceeded方法。- 使用任何要求資料之前,請先替換以下項目: - PROJECT_ID:包含 Cloud Storage 值區的Google Cloud 專案 ID。專案 ID 為英數字元字串,例如- my-project。
- LOCATION:Cloud Storage 值區所在的區域,例如- us或- us-central1。
- RECOMMENDATION_ID:建議的專屬 ID。這個值會顯示在建議的- name欄位結尾。舉例來說,如果- name欄位為- projects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f,則建議 ID 為- fb927dc1-9695-4436-0000-f0f285007c0f。
- ETAG:建議中- etag欄位的值,例如- "dd0686e7136a4cbb"。使用反斜線逸出引號,例如- "\"df7308cca9719dcc\""。
- STATE_METADATA:選用。這個物件包含鍵/值組合,其中含有您選擇的建議中繼資料。例如:- {"reviewedBy": "alice", "priority": "high"}。中繼資料會取代建議中的- stateInfo.stateMetadata欄位。
 - HTTP 方法和網址: - POST https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/recommenders/google.iam.policy.Recommender/recommendations/RECOMMENDATION_ID:markSucceeded - JSON 要求主體: - { "etag": "ETAG", "stateMetadata": { "STATE_METADATA" } }- 如要傳送要求,請展開以下其中一個選項: - 回應會以 - SUCCEEDED狀態顯示建議,如下列範例所示。 為求明確,這個範例省略了大部分的欄位:- ... "stateInfo": { "state": "SUCCEEDED" }, "etag": "\"7caf4103d7669e12\"", "recommenderSubtype": "REMOVE_ROLE_STORAGE_BUCKET", ...- FAILED- 如要將建議標示為 - FAILED,表示您無法套用建議,請使用 Recommender API 的- recommendations.markFailed方法。- 使用任何要求資料之前,請先替換以下項目: - PROJECT_ID:包含 Cloud Storage 值區的Google Cloud 專案 ID。專案 ID 為英數字元字串,例如- my-project。
- LOCATION:Cloud Storage 值區所在的區域,例如- us或- us-central1。
- RECOMMENDATION_ID:建議的專屬 ID。這個值會顯示在建議的- name欄位結尾。舉例來說,如果- name欄位為- projects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f,則建議 ID 為- fb927dc1-9695-4436-0000-f0f285007c0f。
- ETAG:建議中- etag欄位的值,例如- "dd0686e7136a4cbb"。使用反斜線逸出引號,例如- "\"df7308cca9719dcc\""。
- STATE_METADATA:選用。這個物件包含鍵/值組合,其中含有您選擇的建議中繼資料。例如:- {"reviewedBy": "alice", "priority": "high"}。中繼資料會取代建議中的- stateInfo.stateMetadata欄位。
 - HTTP 方法和網址: - POST https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/recommenders/google.iam.policy.Recommender/recommendations/RECOMMENDATION_ID:markFailed - JSON 要求主體: - { "etag": "ETAG", "stateMetadata": { "STATE_METADATA" } }- 如要傳送要求,請展開以下其中一個選項: - 回應會以 - FAILED狀態顯示建議,如下列範例所示。 為求明確,這個範例省略了大部分的欄位:- ... "stateInfo": { "state": "FAILED" }, "etag": "\"7caf4103d7669e12\"", "recommenderSubtype": "REMOVE_ROLE_STORAGE_BUCKET", ...
 - 瞭解最佳化建議- 每項最佳化建議都會附上相關資訊,協助您瞭解提出建議的原因。 - 控制台- 為協助您瞭解系統提出建議的原因,Google Cloud 控制台會顯示主體的權限用量,這是由與建議相關聯的政策洞察回報。 - 為協助您瞭解套用建議的影響,Google Cloud 控制台也會顯示以顏色和符號編碼的權限清單。這份清單會顯示套用建議後,主體的權限會如何變更。例如,系統可能會顯示如下清單:    - 各顏色和符號代表的權限類型如下: - gcloud- 每項最佳化建議都會附上相關資訊,協助您瞭解提出建議的原因。 - 如要瞭解建議的欄位,請參閱 - Recommendation參考資料。- 如要查看這項建議的依據權限用量,請查看與建議相關聯的政策洞察。這些深入分析資訊會列在 - associatedInsights欄位中。如要查看與建議相關的政策洞察資料,請按照下列步驟操作:- 複製相關洞察資料的 ID。ID 是「insight」欄位中insights/後方的所有內容。舉例來說,如果insight欄位顯示projects/123456789012/locations/us/insightTypes/google.iam.policy.Insight/insights/7849add9-73c0-419e-b169-42b3671173fb,洞察 ID 就是7849add9-73c0-419e-b169-42b3671173fb。
- 按照操作說明,使用您複製的洞察 ID 取得政策洞察。
 - REST- 每項最佳化建議都會附上相關資訊,協助您瞭解提出建議的原因。 - 如要瞭解建議的欄位,請參閱 - Recommendation參考資料。- 如要查看這項建議的依據權限用量,請查看與建議相關聯的政策洞察。這些深入分析資訊會列在 - associatedInsights欄位中。如要查看與建議相關的政策洞察資料,請按照下列步驟操作:- 複製相關洞察資料的 ID。ID 是「insight」欄位中insights/後方的所有內容。舉例來說,如果insight欄位顯示projects/123456789012/locations/us/insightTypes/google.iam.policy.Insight/insights/7849add9-73c0-419e-b169-42b3671173fb,洞察 ID 就是7849add9-73c0-419e-b169-42b3671173fb。
- 按照操作說明,使用您複製的洞察 ID 取得政策洞察。
 - 查看、還原及復原變更- 套用或關閉專案層級角色繫結的建議後,該動作會顯示在建議記錄中。 - 您可以在Google Cloud 控制台中查看 bucket 的建議記錄: - 前往 Google Cloud 控制台的「Bucket」頁面。 
- 找出「安全性洞察資料」欄。如果沒有看到這個資料欄,請按一下「資料欄顯示選項」圖示 ,然後選取「安全性深入分析」。 
- 找出要查看建議記錄的 bucket,然後點選該列中的安全性洞察摘要。 
- 在隨即顯示的「安全性建議」窗格中,按一下「建議記錄」分頁標籤。 - Google Cloud 控制台會顯示角色建議的先前動作清單。 
- 如要查看建議的詳細資料,請按一下展開箭頭。 - Google Cloud 控制台會顯示所採取動作的詳細資料,包括採取動作的主體:    
- 選用:如有需要,您可以還原最佳化建議,撤銷建議中的變更,或還原您略過的最佳化建議。 - 如要還原先前套用的建議變更,請按一下「還原」。 Google Cloud 控制台會還原主體角色的變更。Google Cloud 控制台不會再顯示這項最佳化建議。 - 如要還原已關閉的建議,請按一下「還原」。建議會顯示在Google Cloud 控制台的「IAM」頁面。角色或權限不會變更。 
 - 後續步驟- 進一步瞭解建議工具。
- 瞭解如何使用 Cloud Storage 值區的允許政策洞察。
 - 除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。 - 上次更新時間:2025-10-19 (世界標準時間)。 - 
                如要查看建議:
                



