הרשאות ותפקידים

ב-Cloud KMS, המשאבים מאורגנים בהיררכיה. ההיררכיה הזו עוזרת לכם לנהל את המשאבים ולהעניק גישה אליהם ברמות שונות של פירוט. המפתחות נכללים באוספי מפתחות, ואוספי מפתחות קיימים בתוך פרויקט. חיבורי EKM קיימים גם בתוך פרויקט. אפשר לארגן את הפרויקטים בתיקיות או בארגונים.

בנושא הזה מפורטת היררכיית המשאבים ב-Cloud KMS. מידע נוסף על משאבים באופן כללי זמין במאמר היררכיית המשאבים. Cloud de Confiance

היררכיית המשאבים

היקף תפקיד ה-IAM משתנה בהתאם לרמה בהיררכיית המשאבים שבה ניתן התפקיד. בטבלה הזו מוצגות היכולות בפועל שמוענקות על ידי התפקיד Cloud KMS CryptoKey Encrypter ‏(roles/cloudkms.cryptoKeyEncrypter) ברמות שונות בהיררכיה.

אתם יכולים לנהל את הגישה למפתחות או לאוספי מפתחות, אבל לא לגרסאות ספציפיות של מפתחות.

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

עקרונות האבטחה

‫IAM עוזר לאכוף את עקרונות האבטחה הקשורים זה לזה של הפרדת תפקידים ושל הרשאות מינימליות:

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

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

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

ב-IAM יש תפקידים מוגדרים מראש שמעניקים גישה לכל סוג של משאבי Cloud de Confiance . אם אף אחד מהתפקידים המוגדרים מראש לא מתאים לצרכים שלכם, אתם יכולים ליצור תפקיד בהתאמה אישית.

מערכת IAM מציעה את התפקידים המוגדרים מראש הבאים ל-Cloud KMS:

Role Permissions

(roles/cloudkms.admin)

Provides access to Cloud KMS resources, except for access to restricted resource types and cryptographic operations.

Lowest-level resources where you can grant this role:

  • CryptoKey

cloudkms.autokeyConfigs.*

  • cloudkms.autokeyConfigs.get
  • cloudkms.autokeyConfigs.update

cloudkms.cryptoKeyVersions.create

cloudkms.cryptoKeyVersions.delete

cloudkms.cryptoKeyVersions.destroy

cloudkms.cryptoKeyVersions.get

cloudkms.cryptoKeyVersions.list

cloudkms.cryptoKeyVersions.restore

cloudkms.cryptoKeyVersions.update

cloudkms.cryptoKeyVersions.useToDecryptViaDelegation

cloudkms.cryptoKeyVersions.useToEncryptViaDelegation

cloudkms.cryptoKeys.*

  • cloudkms.cryptoKeys.create
  • cloudkms.cryptoKeys.delete
  • cloudkms.cryptoKeys.get
  • cloudkms.cryptoKeys.getIamPolicy
  • cloudkms.cryptoKeys.list
  • cloudkms.cryptoKeys.setIamPolicy
  • cloudkms.cryptoKeys.update

cloudkms.ekmConfigs.*

  • cloudkms.ekmConfigs.get
  • cloudkms.ekmConfigs.getIamPolicy
  • cloudkms.ekmConfigs.setIamPolicy
  • cloudkms.ekmConfigs.update

cloudkms.ekmConnections.*

  • cloudkms.ekmConnections.create
  • cloudkms.ekmConnections.get
  • cloudkms.ekmConnections.getIamPolicy
  • cloudkms.ekmConnections.list
  • cloudkms.ekmConnections.setIamPolicy
  • cloudkms.ekmConnections.update
  • cloudkms.ekmConnections.use
  • cloudkms.ekmConnections.verifyConnectivity

cloudkms.importJobs.*

  • cloudkms.importJobs.create
  • cloudkms.importJobs.get
  • cloudkms.importJobs.getIamPolicy
  • cloudkms.importJobs.list
  • cloudkms.importJobs.setIamPolicy
  • cloudkms.importJobs.useToImport

cloudkms.kajPolicyConfigs.*

  • cloudkms.kajPolicyConfigs.get
  • cloudkms.kajPolicyConfigs.update

cloudkms.keyHandles.*

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

cloudkms.keyRings.*

  • cloudkms.keyRings.create
  • cloudkms.keyRings.createTagBinding
  • cloudkms.keyRings.deleteTagBinding
  • cloudkms.keyRings.get
  • cloudkms.keyRings.getIamPolicy
  • cloudkms.keyRings.list
  • cloudkms.keyRings.listEffectiveTags
  • cloudkms.keyRings.listTagBindings
  • cloudkms.keyRings.setIamPolicy

cloudkms.locations.get

cloudkms.locations.list

cloudkms.locations.optOutKeyDeletionMsa

cloudkms.operations.get

cloudkms.projects.*

  • cloudkms.projects.showEffectiveAutokeyConfig
  • cloudkms.projects.showEffectiveKajEnrollmentConfig
  • cloudkms.projects.showEffectiveKajPolicyConfig

cloudkms.retiredResources.*

  • cloudkms.retiredResources.get
  • cloudkms.retiredResources.list

cloudkms.singleTenantHsmInstanceProposals.delete

cloudkms.singleTenantHsmInstanceProposals.get

cloudkms.singleTenantHsmInstanceProposals.list

cloudkms.singleTenantHsmInstances.*

  • cloudkms.singleTenantHsmInstances.create
  • cloudkms.singleTenantHsmInstances.get
  • cloudkms.singleTenantHsmInstances.list
  • cloudkms.singleTenantHsmInstances.use

resourcemanager.projects.get

(roles/cloudkms.cryptoKeyEncrypterDecrypter)

Provides ability to use Cloud KMS resources for encrypt and decrypt operations only.

Lowest-level resources where you can grant this role:

  • CryptoKey

cloudkms.cryptoKeyVersions.useToDecrypt

cloudkms.cryptoKeyVersions.useToEncrypt

cloudkms.locations.get

cloudkms.locations.list

resourcemanager.projects.get

(roles/cloudkms.viewer)

Enables Get and List operations.

Lowest-level resources where you can grant this role:

  • CryptoKey

cloudkms.autokeyConfigs.get

cloudkms.cryptoKeyVersions.get

cloudkms.cryptoKeyVersions.list

cloudkms.cryptoKeys.get

cloudkms.cryptoKeys.list

cloudkms.ekmConfigs.get

cloudkms.ekmConnections.get

cloudkms.ekmConnections.list

cloudkms.importJobs.get

cloudkms.importJobs.list

cloudkms.kajPolicyConfigs.get

cloudkms.keyHandles.get

cloudkms.keyHandles.list

cloudkms.keyRings.get

cloudkms.keyRings.list

cloudkms.locations.get

cloudkms.locations.list

cloudkms.operations.get

cloudkms.projects.showEffectiveAutokeyConfig

cloudkms.protectableResources.list

cloudkms.retiredResources.*

  • cloudkms.retiredResources.get
  • cloudkms.retiredResources.list

cloudkms.singleTenantHsmInstanceProposals.get

cloudkms.singleTenantHsmInstanceProposals.list

cloudkms.singleTenantHsmInstances.get

cloudkms.singleTenantHsmInstances.list

resourcemanager.projects.get

(roles/cloudkms.autokeyAdmin)

Enables management of AutokeyConfig.

cloudkms.autokeyConfigs.*

  • cloudkms.autokeyConfigs.get
  • cloudkms.autokeyConfigs.update

cloudkms.projects.showEffectiveAutokeyConfig

(roles/cloudkms.autokeyUser)

Grants ability to use KeyHandle resources.

cloudkms.keyHandles.*

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

cloudkms.operations.get

cloudkms.projects.showEffectiveAutokeyConfig

(roles/cloudkms.cryptoKeyDecrypter)

Provides ability to use Cloud KMS resources for decrypt operations only.

Lowest-level resources where you can grant this role:

  • CryptoKey

cloudkms.cryptoKeyVersions.useToDecrypt

cloudkms.locations.get

cloudkms.locations.list

resourcemanager.projects.get

(roles/cloudkms.cryptoKeyDecrypterViaDelegation)

Enables Decrypt operations via other Cloud de Confiance by S3NS services

Lowest-level resources where you can grant this role:

  • CryptoKey

cloudkms.cryptoKeyVersions.useToDecryptViaDelegation

cloudkms.locations.get

cloudkms.locations.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/cloudkms.cryptoKeyEncrypter)

Provides ability to use Cloud KMS resources for encrypt operations only.

Lowest-level resources where you can grant this role:

  • CryptoKey

cloudkms.cryptoKeyVersions.useToEncrypt

cloudkms.locations.get

cloudkms.locations.list

resourcemanager.projects.get

(roles/cloudkms.cryptoKeyEncrypterDecrypterViaDelegation)

Enables Encrypt and Decrypt operations via other Cloud de Confiance by S3NS services

Lowest-level resources where you can grant this role:

  • CryptoKey

cloudkms.cryptoKeyVersions.useToDecryptViaDelegation

cloudkms.cryptoKeyVersions.useToEncryptViaDelegation

cloudkms.locations.get

cloudkms.locations.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/cloudkms.cryptoKeyEncrypterViaDelegation)

Enables Encrypt operations via other Cloud de Confiance by S3NS services

Lowest-level resources where you can grant this role:

  • CryptoKey

cloudkms.cryptoKeyVersions.useToEncryptViaDelegation

cloudkms.locations.get

cloudkms.locations.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/cloudkms.cryptoOperator)

Enables all Crypto Operations.

Lowest-level resources where you can grant this role:

  • CryptoKey

cloudkms.cryptoKeyVersions.useToDecapsulate

cloudkms.cryptoKeyVersions.useToDecrypt

cloudkms.cryptoKeyVersions.useToEncrypt

cloudkms.cryptoKeyVersions.useToSign

cloudkms.cryptoKeyVersions.useToVerify

cloudkms.cryptoKeyVersions.viewPublicKey

cloudkms.locations.generateRandomBytes

cloudkms.locations.get

cloudkms.locations.list

resourcemanager.projects.get

(roles/cloudkms.decapsulator)

Enables Decapsulate and GetPublicKey operations

cloudkms.cryptoKeyVersions.useToDecapsulate

cloudkms.cryptoKeyVersions.viewPublicKey

cloudkms.locations.get

cloudkms.locations.list

resourcemanager.projects.get

(roles/cloudkms.ekmConnectionsAdmin)

Enables management of EkmConnections.

cloudkms.ekmConfigs.get

cloudkms.ekmConfigs.update

cloudkms.ekmConnections.create

cloudkms.ekmConnections.get

cloudkms.ekmConnections.list

cloudkms.ekmConnections.update

cloudkms.ekmConnections.verifyConnectivity

resourcemanager.projects.get

resourcemanager.projects.list

(roles/cloudkms.encryptionDashboardViewer)

Enables viewing KMS encryption dashboard.

cloudkms.cryptoKeys.list

cloudkms.protectableResources.list

(roles/cloudkms.expertPqcSigner)

Enables PQ asymmetric signing key management.

cloudkms.cryptoKeyVersions.managePqcSign

cloudkms.locations.get

cloudkms.locations.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/cloudkms.expertRawAesCbc)

Enables raw AES-CBC keys management.

Lowest-level resources where you can grant this role:

  • CryptoKey

cloudkms.cryptoKeyVersions.manageRawAesCbcKeys

cloudkms.locations.get

cloudkms.locations.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/cloudkms.expertRawAesCtr)

Enables raw AES-CTR keys management.

Lowest-level resources where you can grant this role:

  • CryptoKey

cloudkms.cryptoKeyVersions.manageRawAesCtrKeys

cloudkms.locations.get

cloudkms.locations.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/cloudkms.expertRawPKCS1)

Enables raw PKCS#1 keys management.

Lowest-level resources where you can grant this role:

  • CryptoKey

cloudkms.cryptoKeyVersions.manageRawPKCS1Keys

cloudkms.locations.get

cloudkms.locations.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/cloudkms.hsmSingleTenantExecutor)

Grants ability to execute SingleTenantHsmInstanceProposal resources.

cloudkms.operations.get

cloudkms.singleTenantHsmInstanceProposals.execute

cloudkms.singleTenantHsmInstanceProposals.get

cloudkms.singleTenantHsmInstanceProposals.list

cloudkms.singleTenantHsmInstances.get

cloudkms.singleTenantHsmInstances.list

(roles/cloudkms.hsmSingleTenantKeyCreator)

Grants ability to use single-tenant HSM instances to create keys. This role must be combined with another role that grants the ability to create cryptoKeys.

cloudkms.singleTenantHsmInstances.get

cloudkms.singleTenantHsmInstances.list

cloudkms.singleTenantHsmInstances.use

(roles/cloudkms.hsmSingleTenantProposer)

Grants ability to create SingleTenantHsmInstances and SingleTenantHsmInstanceProposals.

cloudkms.operations.get

cloudkms.singleTenantHsmInstanceProposals.create

cloudkms.singleTenantHsmInstanceProposals.delete

cloudkms.singleTenantHsmInstanceProposals.get

cloudkms.singleTenantHsmInstanceProposals.list

cloudkms.singleTenantHsmInstances.create

cloudkms.singleTenantHsmInstances.get

cloudkms.singleTenantHsmInstances.list

(roles/cloudkms.hsmSingleTenantQuorumMember)

Grants ability to approve SingleTenantHsmInstanceProposal resources.

cloudkms.operations.get

cloudkms.singleTenantHsmInstanceProposals.approve

cloudkms.singleTenantHsmInstanceProposals.get

cloudkms.singleTenantHsmInstanceProposals.list

cloudkms.singleTenantHsmInstances.get

cloudkms.singleTenantHsmInstances.list

(roles/cloudkms.importer)

Enables ImportCryptoKeyVersion, CreateImportJob, ListImportJobs, and GetImportJob operations

cloudkms.importJobs.create

cloudkms.importJobs.get

cloudkms.importJobs.list

cloudkms.importJobs.useToImport

cloudkms.locations.get

cloudkms.locations.list

resourcemanager.projects.get

(roles/cloudkms.keyAccessJustificationsEnrollmentConfigViewer)

Grant ability to view Key Access Justification enrollment configs of a project.

cloudkms.projects.showEffectiveKajEnrollmentConfig

(roles/cloudkms.keyAccessJustificationsPolicyConfigAdmin)

Grant ability to manage Key Access Justifications Policy at parent resource level.

cloudkms.kajPolicyConfigs.*

  • cloudkms.kajPolicyConfigs.get
  • cloudkms.kajPolicyConfigs.update

cloudkms.projects.showEffectiveKajPolicyConfig

(roles/cloudkms.protectedResourcesViewer)

Enables viewing protected resources.

cloudkms.protectedResources.search

(roles/cloudkms.publicKeyViewer)

Enables GetPublicKey operations

Lowest-level resources where you can grant this role:

  • CryptoKey

cloudkms.cryptoKeyVersions.viewPublicKey

cloudkms.locations.get

cloudkms.locations.list

resourcemanager.projects.get

(roles/cloudkms.signer)

Enables Sign operations

Lowest-level resources where you can grant this role:

  • CryptoKey

cloudkms.cryptoKeyVersions.useToSign

cloudkms.locations.get

cloudkms.locations.list

resourcemanager.projects.get

(roles/cloudkms.signerVerifier)

Enables Sign, Verify, and GetPublicKey operations

Lowest-level resources where you can grant this role:

  • CryptoKey

cloudkms.cryptoKeyVersions.useToSign

cloudkms.cryptoKeyVersions.useToVerify

cloudkms.cryptoKeyVersions.viewPublicKey

cloudkms.locations.get

cloudkms.locations.list

resourcemanager.projects.get

(roles/cloudkms.verifier)

Enables Verify and GetPublicKey operations

Lowest-level resources where you can grant this role:

  • CryptoKey

cloudkms.cryptoKeyVersions.useToVerify

cloudkms.cryptoKeyVersions.viewPublicKey

cloudkms.locations.get

cloudkms.locations.list

resourcemanager.projects.get

Service agent roles

Service agent roles should only be granted to service agents.

Role Permissions

(roles/cloudkms.orgServiceAgent)

Gives Cloud KMS organization-level service account access to managed resources.

cloudasset.assets.listResource

cloudasset.assets.searchAllIamPolicies

cloudasset.assets.searchAllResources

(roles/cloudkms.serviceAgent)

Gives Cloud KMS service account access to managed resources.

cloudasset.assets.listCloudkmsCryptoKeys

cloudasset.assets.listResource

cloudasset.assets.searchAllIamPolicies

cloudasset.assets.searchAllResources

cloudkms.cryptoKeys.create

cloudkms.cryptoKeys.getIamPolicy

cloudkms.cryptoKeys.setIamPolicy

cloudkms.keyRings.create

cloudkms.keyRings.get

(roles/cloudkmskacls.serviceAgent)

Grants Cloud KMS KACLS Service Agent access to KMS resource permissions to perform DEK encryption/decryption.

cloudkms.cryptoKeyVersions.useToDecrypt

cloudkms.cryptoKeyVersions.useToEncrypt

cloudkms.cryptoKeys.get

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

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

תפקיד בהתאמה אישית כולל הרשאה אחת או יותר מההרשאות שמפורטות בהפניה ל-IAM. ההרשאות שקשורות ל-Cloud Key Management Service API מתחילות במחרוזת cloudkms. מידע נוסף זמין במאמר בנושא רמות התמיכה להרשאות בתפקידים בהתאמה אישית.

מידע על ההרשאות שנדרשות להפעלת method ספציפית של Cloud Key Management Service API זמין בהפניה ל-API של אותה method.

הנחיות כלליות לניהול גישה ב-Cloud KMS

מומלץ להימנע משימוש בתפקידים בסיסיים ברמת הפרויקט, כמו owner, ‏ editor ו-viewer. בתפקידים האלה אין הפרדה בין היכולת לנהל מפתחות לבין היכולת להשתמש במפתחות לפעולות קריפטוגרפיות, ולכן לא מומלץ להשתמש בהם בסביבות ייצור. במקום זאת, צריך להשתמש בתפקידים מוגדרים מראש או ליצור תפקידים בהתאמה אישית שמשקפים את הדרישות העסקיות שלכם.

הדוגמאות הבאות ממחישות כמה הנחיות טובות לאבטחה:

  • בארגון גדול או מורכב, יכול להיות שתבחרו בגישה כמו זו שמתוארת בהמשך:

    • נותנים לחברים בצוות אבטחת ה-IT את התפקיד Cloud KMS Admin‏ (roles/cloudkms.admin) בכל הפרויקטים. אם חברי צוות שונים מטפלים בהיבטים שונים של מחזור החיים של מפתח, אתם יכולים להעניק לחברי הצוות האלה תפקיד עם הרשאות ספציפיות יותר, כמו התפקיד 'יבואן ב-Cloud KMS' (roles/cloudkms.importer).
    • צריך להעניק למשתמשים או לאפליקציות שקוראים או כותבים נתונים מוצפנים את התפקיד Encrypter / Decrypter ב-Cloud KMS ‏(roles/cloudkms.cryptoKeyEncrypterDecrypter).
    • מקצים למשתמשים או לאפליקציות שצריכים לצפות בחלק הציבורי של מפתח שמשמש להצפנה אסימטרית את התפקיד 'צפייה במפתח ציבורי של Cloud KMS' (roles/cloudkms.publicKeyViewer).
    • ליצור תפקידים מוגדרים מראש שמתאימים לדרישות העסקיות שלכם. לדוגמה, יכול להיות שמשתמש מסוים יצטרך לעקוב אחרי המכסות של פרויקט ולצפות בנתוני יומן.
  • בארגון קטן עם דרישות אבטחה פשוטות, אפשר לבחור בגישה פשוטה יותר ולהעניק תפקיד רחב כמו אדמין ארגוני (roles/resourcemanager.organizationAdmin). עם זאת, יכול להיות שהגישה הזו לא תתאים לדרישות שלכם בהמשך.

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

  • לא מומלץ להעניק את התפקיד owner לאף חבר. בלי התפקיד owner, אף חבר בפרויקט לא יכול ליצור מפתח ולהשתמש בו כדי לפענח נתונים או לחתום עליהם, אלא אם כל אחת מההרשאות האלה מוענקת לחבר הזה. כדי להעניק גישת אדמין רחבה בלי להעניק את היכולת להצפין או לפענח, מקצים במקום זאת את התפקיד Cloud KMS Admin‏ (roles/cloudkms.admin).

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

בדיקת הרשאות

לכל סוג אובייקט ב-Cloud KMS שאפשר להגדיר לו הרשאות IAM ברמת גרנולרית, יש method ‏testIamPermissions. ה-method ‏testIamPermissions מחזירה את סדרת ההרשאות שניתנו למשתמש ששלח את הקריאה לאובייקט הזה.

אי אפשר להגדיר הרשאות IAM בגרסת מפתח, ולכן לסוג האובייקט CryptoKeyVersion אין את השיטה הזו.

השיטה testIamPermissions של אובייקט מחזירה TestIamPermissionsResponse.

דוגמאות להפעלת שיטות של testIamPermissions מופיעות במסמכי התיעוד בנושא בדיקת הרשאות ב-IAM.

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

  • IAM מאפשר לנהל את ההרשאות ואת היקפי הגישה למשאבים של Cloud de Confiance באופן מרכזי.
  • הסבר על הסוגים השונים של אובייקטים ב-Cloud KMS.