תפקידי IAM ל-Cloud Storage

במאמר הזה מוסבר על תפקידים והרשאות בניהול זהויות והרשאות גישה (IAM) ב-Cloud Storage.

תפקידים מוגדרים מראש

בטבלה הבאה מתוארים התפקידים של ניהול זהויות והרשאות גישה (IAM) שמשויכים ל-Cloud Storage, ופירוט של ההרשאות שכלולות בכל תפקיד. אם לא צוין אחרת, אפשר להחיל את התפקידים האלה גם על פרויקטים, גם על קטגוריות וגם על תיקיות מנוהלות. עם זאת, אפשר להקצות תפקידים מדור קודם רק לקטגוריות ספציפיות.

במאמר איך משתמשים בהרשאות IAM מוסבר איך לקבוע את הגישה לקטגוריות. במאמר שימוש ב-IAM לתיקיות מנוהלות מוסבר איך לקבוע את הגישה לתיקיות מנוהלות.

Role Permissions

(roles/storage.admin)

Grants full control of objects and buckets.

When applied to an individual bucket, control applies only to the specified bucket and objects within the bucket.

Lowest-level resources where you can grant this role:

  • Bucket

cloudkms.keyHandles.*

  • cloudkms.keyHandles.create
  • cloudkms.keyHandles.get
  • cloudkms.keyHandles.list

cloudkms.operations.get

cloudkms.projects.showEffectiveAutokeyConfig

firebase.projects.get

monitoring.timeSeries.create

orgpolicy.policy.get

recommender.iamPolicyInsights.*

  • recommender.iamPolicyInsights.get
  • recommender.iamPolicyInsights.list
  • recommender.iamPolicyInsights.update

recommender.iamPolicyRecommendations.*

  • recommender.iamPolicyRecommendations.get
  • recommender.iamPolicyRecommendations.list
  • recommender.iamPolicyRecommendations.update

recommender.storageBucketSoftDeleteInsights.*

  • recommender.storageBucketSoftDeleteInsights.get
  • recommender.storageBucketSoftDeleteInsights.list
  • recommender.storageBucketSoftDeleteInsights.update

recommender.storageBucketSoftDeleteRecommendations.*

  • recommender.storageBucketSoftDeleteRecommendations.get
  • recommender.storageBucketSoftDeleteRecommendations.list
  • recommender.storageBucketSoftDeleteRecommendations.update

resourcemanager.hierarchyNodes.listEffectiveTags

resourcemanager.projects.get

resourcemanager.projects.list

storage.anywhereCaches.*

  • storage.anywhereCaches.create
  • storage.anywhereCaches.disable
  • storage.anywhereCaches.get
  • storage.anywhereCaches.list
  • storage.anywhereCaches.pause
  • storage.anywhereCaches.resume
  • storage.anywhereCaches.update

storage.bucketOperations.*

  • storage.bucketOperations.cancel
  • storage.bucketOperations.get
  • storage.bucketOperations.list

storage.buckets.*

  • storage.buckets.create
  • storage.buckets.createTagBinding
  • storage.buckets.delete
  • storage.buckets.deleteTagBinding
  • storage.buckets.enableObjectRetention
  • storage.buckets.get
  • storage.buckets.getIamPolicy
  • storage.buckets.getIpFilter
  • storage.buckets.getObjectInsights
  • storage.buckets.list
  • storage.buckets.listEffectiveTags
  • storage.buckets.listTagBindings
  • storage.buckets.relocate
  • storage.buckets.restore
  • storage.buckets.setIamPolicy
  • storage.buckets.setIpFilter
  • storage.buckets.update
  • storage.buckets.viewIntelligenceDetails

storage.folders.*

  • storage.folders.create
  • storage.folders.delete
  • storage.folders.get
  • storage.folders.list
  • storage.folders.rename

storage.intelligenceConfigs.*

  • storage.intelligenceConfigs.get
  • storage.intelligenceConfigs.update

storage.managedFolders.*

  • storage.managedFolders.create
  • storage.managedFolders.delete
  • storage.managedFolders.get
  • storage.managedFolders.getIamPolicy
  • storage.managedFolders.list
  • storage.managedFolders.setIamPolicy

storage.multipartUploads.*

  • storage.multipartUploads.abort
  • storage.multipartUploads.create
  • storage.multipartUploads.list
  • storage.multipartUploads.listParts

storage.objects.*

  • storage.objects.create
  • storage.objects.createContext
  • storage.objects.delete
  • storage.objects.deleteContext
  • storage.objects.get
  • storage.objects.getIamPolicy
  • storage.objects.list
  • storage.objects.move
  • storage.objects.overrideUnlockedRetention
  • storage.objects.restore
  • storage.objects.setIamPolicy
  • storage.objects.setRetention
  • storage.objects.update
  • storage.objects.updateContext

storagebatchoperations.*

  • storagebatchoperations.bucketOperations.get
  • storagebatchoperations.bucketOperations.list
  • storagebatchoperations.jobs.cancel
  • storagebatchoperations.jobs.create
  • storagebatchoperations.jobs.delete
  • storagebatchoperations.jobs.get
  • storagebatchoperations.jobs.list
  • storagebatchoperations.locations.get
  • storagebatchoperations.locations.list
  • storagebatchoperations.operations.cancel
  • storagebatchoperations.operations.delete
  • storagebatchoperations.operations.get
  • storagebatchoperations.operations.list

(roles/storage.bucketViewer)

Grants permission to view buckets and their metadata, excluding IAM policies.

storage.buckets.get

storage.buckets.list

(roles/storage.expressModeServiceInput)

Grants permission to Express Mode service accounts at a managed folder so they can create objects but not read them on input folders.

storage.objects.create

storage.objects.delete

storage.objects.list

storage.objects.update

(roles/storage.expressModeServiceOutput)

Grants permission to EasyGCP service accounts at a managed folder so they can read objects but not write them on output folders.

storage.objects.delete

storage.objects.get

storage.objects.list

(roles/storage.expressModeUserAccess)

Grants permission to Express Mode accounts at the project level so they can read, list, create and delete any object in any of their buckets in Express Mode.

orgpolicy.policy.get

storage.buckets.get

storage.buckets.list

storage.multipartUploads.*

  • storage.multipartUploads.abort
  • storage.multipartUploads.create
  • storage.multipartUploads.list
  • storage.multipartUploads.listParts

storage.objects.create

storage.objects.delete

storage.objects.get

storage.objects.list

storage.objects.restore

storage.objects.update

(roles/storage.folderAdmin)

Grants full control over folders and objects, including listing, creating, viewing, and deleting objects.

orgpolicy.policy.get

resourcemanager.projects.get

resourcemanager.projects.list

storage.folders.*

  • storage.folders.create
  • storage.folders.delete
  • storage.folders.get
  • storage.folders.list
  • storage.folders.rename

storage.managedFolders.*

  • storage.managedFolders.create
  • storage.managedFolders.delete
  • storage.managedFolders.get
  • storage.managedFolders.getIamPolicy
  • storage.managedFolders.list
  • storage.managedFolders.setIamPolicy

storage.multipartUploads.*

  • storage.multipartUploads.abort
  • storage.multipartUploads.create
  • storage.multipartUploads.list
  • storage.multipartUploads.listParts

storage.objects.*

  • storage.objects.create
  • storage.objects.createContext
  • storage.objects.delete
  • storage.objects.deleteContext
  • storage.objects.get
  • storage.objects.getIamPolicy
  • storage.objects.list
  • storage.objects.move
  • storage.objects.overrideUnlockedRetention
  • storage.objects.restore
  • storage.objects.setIamPolicy
  • storage.objects.setRetention
  • storage.objects.update
  • storage.objects.updateContext

(roles/storage.hmacKeyAdmin)

Full control of Cloud Storage HMAC keys.

firebase.projects.get

orgpolicy.policy.get

resourcemanager.projects.get

resourcemanager.projects.list

storage.hmacKeys.*

  • storage.hmacKeys.create
  • storage.hmacKeys.delete
  • storage.hmacKeys.get
  • storage.hmacKeys.list
  • storage.hmacKeys.update

(roles/storage.insightsCollectorService)

Read-only access to Cloud Storage Inventory metadata for Storage Insights.

resourcemanager.projects.get

resourcemanager.projects.list

storage.buckets.get

storage.buckets.getObjectInsights

(roles/storage.legacyBucketOwner)

Grants permission to create, overwrite, and delete objects; list objects in a bucket and read object metadata, excluding allow policies, when listing; and read and edit bucket metadata, including allow policies.

Use of this role is also reflected in the bucket's ACLs. For more information, see IAM relation to ACLs.

Lowest-level resources where you can grant this role:

  • Bucket

storage.anywhereCaches.*

  • storage.anywhereCaches.create
  • storage.anywhereCaches.disable
  • storage.anywhereCaches.get
  • storage.anywhereCaches.list
  • storage.anywhereCaches.pause
  • storage.anywhereCaches.resume
  • storage.anywhereCaches.update

storage.bucketOperations.*

  • storage.bucketOperations.cancel
  • storage.bucketOperations.get
  • storage.bucketOperations.list

storage.buckets.createTagBinding

storage.buckets.deleteTagBinding

storage.buckets.enableObjectRetention

storage.buckets.get

storage.buckets.getIamPolicy

storage.buckets.getIpFilter

storage.buckets.listEffectiveTags

storage.buckets.listTagBindings

storage.buckets.relocate

storage.buckets.restore

storage.buckets.setIamPolicy

storage.buckets.setIpFilter

storage.buckets.update

storage.folders.*

  • storage.folders.create
  • storage.folders.delete
  • storage.folders.get
  • storage.folders.list
  • storage.folders.rename

storage.managedFolders.*

  • storage.managedFolders.create
  • storage.managedFolders.delete
  • storage.managedFolders.get
  • storage.managedFolders.getIamPolicy
  • storage.managedFolders.list
  • storage.managedFolders.setIamPolicy

storage.multipartUploads.*

  • storage.multipartUploads.abort
  • storage.multipartUploads.create
  • storage.multipartUploads.list
  • storage.multipartUploads.listParts

storage.objects.create

storage.objects.createContext

storage.objects.delete

storage.objects.deleteContext

storage.objects.list

storage.objects.restore

storage.objects.setRetention

storage.objects.updateContext

(roles/storage.legacyBucketReader)

Grants permission to list a bucket's contents and read bucket metadata, excluding allow policies. Also grants permission to read object metadata, excluding allow policies, when listing objects.

Use of this role is also reflected in the bucket's ACLs. For more information, see IAM relation to ACLs.

Lowest-level resources where you can grant this role:

  • Bucket

storage.buckets.get

storage.folders.get

storage.folders.list

storage.managedFolders.get

storage.managedFolders.list

storage.multipartUploads.list

storage.objects.list

(roles/storage.legacyBucketWriter)

Grants permission to create, overwrite, and delete objects; list objects in a bucket and read object metadata, excluding allow policies, when listing; and read bucket metadata, excluding allow policies.

Use of this role is also reflected in the bucket's ACLs. For more information, see IAM relation to ACLs.

Lowest-level resources where you can grant this role:

  • Bucket

storage.buckets.get

storage.folders.*

  • storage.folders.create
  • storage.folders.delete
  • storage.folders.get
  • storage.folders.list
  • storage.folders.rename

storage.managedFolders.create

storage.managedFolders.delete

storage.managedFolders.get

storage.managedFolders.list

storage.multipartUploads.*

  • storage.multipartUploads.abort
  • storage.multipartUploads.create
  • storage.multipartUploads.list
  • storage.multipartUploads.listParts

storage.objects.create

storage.objects.createContext

storage.objects.delete

storage.objects.list

storage.objects.restore

storage.objects.setRetention

(roles/storage.legacyObjectOwner)

Grants permission to view and edit objects and their metadata, including ACLs.

Lowest-level resources where you can grant this role:

  • Bucket

storage.objects.createContext

storage.objects.deleteContext

storage.objects.get

storage.objects.getIamPolicy

storage.objects.overrideUnlockedRetention

storage.objects.setIamPolicy

storage.objects.setRetention

storage.objects.update

storage.objects.updateContext

(roles/storage.legacyObjectReader)

Grants permission to view objects and their metadata, excluding ACLs.

Lowest-level resources where you can grant this role:

  • Bucket

storage.objects.get

(roles/storage.objectAdmin)

Grants full control of objects, including listing, creating, viewing, and deleting objects.

Lowest-level resources where you can grant this role:

  • Bucket

monitoring.timeSeries.create

orgpolicy.policy.get

resourcemanager.projects.get

resourcemanager.projects.list

storage.folders.*

  • storage.folders.create
  • storage.folders.delete
  • storage.folders.get
  • storage.folders.list
  • storage.folders.rename

storage.managedFolders.create

storage.managedFolders.delete

storage.managedFolders.get

storage.managedFolders.list

storage.multipartUploads.*

  • storage.multipartUploads.abort
  • storage.multipartUploads.create
  • storage.multipartUploads.list
  • storage.multipartUploads.listParts

storage.objects.*

  • storage.objects.create
  • storage.objects.createContext
  • storage.objects.delete
  • storage.objects.deleteContext
  • storage.objects.get
  • storage.objects.getIamPolicy
  • storage.objects.list
  • storage.objects.move
  • storage.objects.overrideUnlockedRetention
  • storage.objects.restore
  • storage.objects.setIamPolicy
  • storage.objects.setRetention
  • storage.objects.update
  • storage.objects.updateContext

(roles/storage.objectCreator)

Allows users to create objects. Does not give permission to view, delete, or overwrite objects.

Lowest-level resources where you can grant this role:

  • Bucket

orgpolicy.policy.get

resourcemanager.projects.get

resourcemanager.projects.list

storage.folders.create

storage.managedFolders.create

storage.multipartUploads.abort

storage.multipartUploads.create

storage.multipartUploads.listParts

storage.objects.create

storage.objects.createContext

(roles/storage.objectUser)

Access to create, read, update and delete objects and multipart uploads in GCS.

monitoring.timeSeries.create

orgpolicy.policy.get

resourcemanager.projects.get

resourcemanager.projects.list

storage.folders.*

  • storage.folders.create
  • storage.folders.delete
  • storage.folders.get
  • storage.folders.list
  • storage.folders.rename

storage.managedFolders.create

storage.managedFolders.delete

storage.managedFolders.get

storage.managedFolders.list

storage.multipartUploads.*

  • storage.multipartUploads.abort
  • storage.multipartUploads.create
  • storage.multipartUploads.list
  • storage.multipartUploads.listParts

storage.objects.create

storage.objects.createContext

storage.objects.delete

storage.objects.deleteContext

storage.objects.get

storage.objects.list

storage.objects.move

storage.objects.restore

storage.objects.update

storage.objects.updateContext

(roles/storage.objectViewer)

Grants access to view objects and their metadata, excluding ACLs. Can also list the objects in a bucket.

Lowest-level resources where you can grant this role:

  • Bucket

resourcemanager.projects.get

resourcemanager.projects.list

storage.folders.get

storage.folders.list

storage.managedFolders.get

storage.managedFolders.list

storage.objects.get

storage.objects.list

תפקידים מוגדרים מראש ב-Storage Insights

בטבלה הבאה מתוארים התפקידים ב-IAM שמשויכים ל-Storage Insights, ופירוט של ההרשאות שכלולות בכל תפקיד.

Role Permissions

(roles/storageinsights.admin)

Full access to Storage Insights resources.

resourcemanager.projects.get

resourcemanager.projects.list

storageinsights.*

  • storageinsights.datasetConfigs.create
  • storageinsights.datasetConfigs.delete
  • storageinsights.datasetConfigs.get
  • storageinsights.datasetConfigs.linkDataset
  • storageinsights.datasetConfigs.list
  • storageinsights.datasetConfigs.unlinkDataset
  • storageinsights.datasetConfigs.update
  • storageinsights.locations.get
  • storageinsights.locations.list
  • storageinsights.operations.cancel
  • storageinsights.operations.delete
  • storageinsights.operations.get
  • storageinsights.operations.list
  • storageinsights.reportConfigs.create
  • storageinsights.reportConfigs.delete
  • storageinsights.reportConfigs.get
  • storageinsights.reportConfigs.list
  • storageinsights.reportConfigs.update
  • storageinsights.reportDetails.get
  • storageinsights.reportDetails.list

(roles/storageinsights.analyst)

Data access to Storage Insights.

resourcemanager.projects.get

resourcemanager.projects.list

storageinsights.datasetConfigs.get

storageinsights.datasetConfigs.linkDataset

storageinsights.datasetConfigs.list

storageinsights.datasetConfigs.unlinkDataset

storageinsights.locations.*

  • storageinsights.locations.get
  • storageinsights.locations.list

storageinsights.operations.get

storageinsights.operations.list

storageinsights.reportConfigs.get

storageinsights.reportConfigs.list

storageinsights.reportDetails.*

  • storageinsights.reportDetails.get
  • storageinsights.reportDetails.list

(roles/storageinsights.serviceAgent)

Permissions for Insights to write reports into customer project

bigquery.datasets.create

serviceusage.services.use

storageinsights.reportDetails.list

(roles/storageinsights.viewer)

Read-only access to Storage Insights resources.

resourcemanager.projects.get

resourcemanager.projects.list

storageinsights.datasetConfigs.get

storageinsights.datasetConfigs.list

storageinsights.locations.*

  • storageinsights.locations.get
  • storageinsights.locations.list

storageinsights.operations.get

storageinsights.operations.list

storageinsights.reportConfigs.get

storageinsights.reportConfigs.list

storageinsights.reportDetails.*

  • storageinsights.reportDetails.get
  • storageinsights.reportDetails.list

תפקידים בסיסיים

Google Cloud

התפקידים הבסיסיים הם תפקידים שהיו קיימים לפני IAM. לתפקידים הבסיסיים יש מאפיינים ייחודיים:

  • אפשר להקצות אותם רק לפרויקט שלם ולא לקטגוריות ספציפיות בתוך הפרויקט. כמו תפקידים אחרים שמקצים לפרויקט, הם חלים על כל הקטגוריות והאובייקטים שכלולים בפרויקט.

  • לתפקידים בסיסיים יש הרשאות נוספות בשירותים אחרים של Google Cloud, שלא מפורטות בקטע הזה. למידע כללי על ההרשאות שתפקידים בסיסיים נותנים, ראו תפקידים בסיסיים.

  • לכל תפקיד בסיסי יש ערך נוחות שמאפשר להתייחס לתפקיד הבסיסי כאילו מדובר בקבוצה. אם משתמשים בו בצורה הזאת, כל חשבון משתמש עם התפקיד הבסיסי נחשב לחלק מהקבוצה. כל החברים בקבוצה מקבלים גישה נוספת למשאבים על סמך הגישה שמוגדרת בערך הנוחות.

    • אפשר להשתמש בערכי נוחות כשמקצים תפקידים לקטגוריות.

    • אפשר להשתמש בערכי נוחות כשמגדירים רשימות ACL לאובייקטים.

  • כשמשתמשים בתפקידים בסיסיים, זה לא אומר שמקבלים גישה מלאה למשאבים של Cloud Storage, כמו שאולי משתמע מהשם שלהם. התפקידים הבסיסיים נותנים חלק מהגישה באופן מובנה, והחלקים האחרים של הגישה ניתנים באמצעות ערכי נוחות. מכיוון שכמו כל חשבון משתמש אחר ב-IAM, גם את ערכי הנוחות אפשר להוסיף או להסיר באופן ידני, אתם יכולים לבטל את הרשאות הגישה של חשבונות משתמשים גם אם הם אמורים לקבל אותם עם התפקיד הבסיסי.

    בקטע בנושא שינוי ההתנהגות תוכלו לקרוא על הרשאות הגישה הנוספות שחשבונות משתמשים עם תפקידים בסיסיים מקבלים בדרך כלל דרך ערכי הנוחות.

הרשאות מובנות

בטבלה הבאה מפורטות ההרשאות שמשויכות תמיד לכל אחד מהתפקידים הבסיסיים ב-Cloud Storage.

תפקיד תיאור הרשאות ב-Cloud Storage
צפייה (roles/viewer) התפקיד הזה מאפשר לראות את רשימת הקטגוריות בפרויקט, לראות את המטא-נתונים של הקטגוריות ברשימה (לא כולל רשימות ACL) ולראות את מפתחות ה-HMAC בפרויקט ולקבל אותם. storage.buckets.getIpFilter
storage.buckets.list
storage.hmacKeys.get
storage.hmacKeys.list
עריכה (roles/editor) התפקיד הזה מאפשר ליצור קטגוריות בפרויקט, לראות רשימה של הקטגוריות בפרויקט ולמחוק אותן. בנוסף הוא מאפשר לראות את המטא-נתונים של הקטגוריות ברשימה (לא כולל רשימות ACL) ולנהל את מפתחות ה-HMAC בפרויקט. storage.buckets.create
storage.buckets.delete
storage.buckets.getIpFilter
storage.buckets.list
storage.hmacKeys.*
בעלים (roles/owner)

התפקיד הזה מאפשר ליצור קטגוריות בפרויקט, לראות רשימה של הקטגוריות בפרויקט ולמחוק אותן. בנוסף הוא מאפשר לראות את המטא-נתונים של הקטגוריות ברשימה (לא כולל רשימות ACL), ליצור, למחוק ולהציג קישורי תגים ברשימה. הוא גם מאפשר לנהל את מפתחות ה-HMAC בפרויקט, להפעיל, להשבית ולעדכן את ההגדרות של Storage Intelligence בפרויקט, בתיקייה או בארגון ולקבל אותן.

ב- Google Cloud באופן כללי, חשבונות משתמשים עם התפקיד הזה יכולים גם לבצע משימות ניהוליות, כמו שינוי התפקידים של חשבונות המשתמשים בפרויקט או שינוי החיוב.

storage.buckets.create
storage.buckets.delete
storage.buckets.list
storage.buckets.createTagBinding
storage.buckets.deleteTagBinding
storage.buckets.getIpFilter
storage.buckets.listEffectiveTags
storage.buckets.listTagBindings
storage.buckets.setIpFilter
storage.hmacKeys.*
storage.intelligenceConfigs.get
storage.intelligenceConfigs.update

שינוי ההתנהגות

למשתמשים עם תפקידים בסיסיים יש בדרך כלל גישה נוספת לקטגוריות ולאובייקטים של הפרויקט, בזכות ערכי נוחות. כשיוצרים קטגוריה, ערכי הנוחות מקבלים גישה מסוימת ברמת הקטגוריה. אבל בהמשך אתם יכולים לערוך את מדיניות ה-IAM של הקטגוריה ואת רשימות ה-ACL של האובייקטים וכך להסיר או לשנות את הגישה.

כשיוצרים קטגוריה שמופעלת בה גישה אחידה ברמת הקטגוריה, ערכי הנוחות נותנים את התפקידים הבאים:

  • חשבונות משתמשים שקיבלו את התפקיד roles/viewer מקבלים את התפקידים roles/storage.legacyBucketReader ו-roles/storage.legacyObjectReader בקטגוריה.

  • חשבונות משתמשים שקיבלו את התפקיד roles/editor מקבלים את התפקידים roles/storage.legacyBucketOwner ו-roles/storage.legacyObjectOwner בקטגוריה.

  • חשבונות משתמשים שקיבלו את התפקיד roles/owner מקבלים את התפקידים roles/storage.legacyBucketOwner ו-roles/storage.legacyObjectOwner בקטגוריה.

כשיוצרים קטגוריה שלא מופעלת בה גישה אחידה ברמת הקטגוריה, ערכי הנוחות נותנים את התפקידים הבאים:

  • חשבונות משתמשים שקיבלו את התפקיד roles/viewer מקבלים את התפקיד roles/storage.legacyBucketReader בקטגוריה.

  • חשבונות משתמשים שקיבלו את התפקיד roles/editor מקבלים את התפקיד roles/storage.legacyBucketOwner בקטגוריה.

  • חשבונות משתמשים שקיבלו את התפקיד roles/owner מקבלים את התפקיד roles/storage.legacyBucketOwner בקטגוריה.

  • בנוסף, לקטגוריות מוגדרת רשימת ברירת מחדל של בקרת גישה (ACL) לאובייקט. בדרך כלל, רשימת ה-ACL שמוגדרת כברירת מחדל חלה על אובייקטים חדשים בקטגוריה, ולרוב נותנת עוד גישה לערכי הנוחות.

תפקידים בהתאמה אישית

לפעמים אולי תרצו להגדיר תפקידים משלכם שכוללים חבילות של הרשאות שאתם בוחרים. כדי לתמוך בכך, IAM כולל אפשרות של תפקידים בהתאמה אישית.

המאמרים הבאים