本頁面說明如何使用 Identity and Access Management (IAM) 控管 Memorystore for Redis 專案的存取權與權限。
總覽
Google Cloud 提供 IAM,可讓您以更精細的方式授予使用者特定 Google Cloud 資源的存取權,並避免其他資源遭到未經授權者擅自存取。本頁面說明 Memorystore for Redis 的 IAM 角色和權限。如需角色和權限的詳細說明,請參閱 IAM 說明文件。
Memorystore for Redis 提供了一組預先定義的角色,可讓您輕鬆控制 Redis 資源的存取權。如果預先定義的角色並未提供您需要的權限組合,您也可以建立自訂角色。此外,您仍可使用舊版基本角色 (編輯者、檢視者和擁有者),但這些角色無法提供與 Memorystore for Redis 角色相同的完善控管能力。尤其基本角色提供的是跨Google Cloud的資源存取權,而非針對 Memorystore for Redis。如要進一步瞭解基本角色,請參閱「基本角色」。
權限與角色
本節概述 Memorystore for Redis 支援的權限和角色。
預先定義的角色
Memorystore for Redis 提供一些預先定義的角色,可為主體提供更精細的權限。您授予主體的角色會控管主體可採取的動作。主體可以是個人、群組或服務帳戶。
您可以為相同的主體授予多個角色,如果您有權限,可以隨時變更授予主體的角色。
權限範圍越廣的角色會包含定義較為狹隘的角色。舉例來說,「Redis 編輯者」角色具有「Redis 檢視者」角色的所有權限,以及「Redis 編輯者」角色的其他權限。同樣地,「Redis 管理員」角色具有「Redis 編輯者」角色的所有權限,以及「Redis 管理員」角色的其他權限。
基本角色 (擁有者、編輯者、檢視者) 提供跨 Google Cloud的權限。Memorystore for Redis 的專屬角色僅提供 Memorystore for Redis 權限,除了以下的 Google Cloud 權限,這些權限為一般 Google Cloud 使用所需:
resourcemanager.projects.get
resourcemanager.projects.list
下表列出 Memorystore for Redis 的預先定義角色及其 Memorystore for Redis 權限:
角色 | 名稱 | Redis 權限 | 說明 |
---|---|---|---|
|
擁有者 |
|
對於所有 Google Cloud 資源具有完整存取權與控管權,可管理使用者存取權 |
|
編輯者 | 所有 redis 權限 (除了 *.getIamPolicy 和 .setIamPolicy ) |
具備所有 Google Cloud 和 Redis 資源的讀取/寫入權限 (具備完整的控管權限,但無法修改權限) |
|
檢視者 |
|
具備所有 Google Cloud 資源的唯讀存取權,包括 Redis 資源 |
|
Redis 管理員 |
|
可完整控制所有 Memorystore for Redis 資源。 |
|
Redis 編輯者 | 所有 redis 權限,除了
|
管理 Memorystore for Redis 執行個體。但無法建立或刪除執行個體 |
|
Redis 檢視者 | 所有 redis 權限,除了
|
具備所有 Memorystore for Redis 資源的唯讀存取權。 |
權限與角色
下表列出 Memorystore for Redis 支援的每項權限,以及包含這些權限的 Memorystore for Redis 角色:
權限 | Redis 角色 | 基本角色 |
---|---|---|
|
Redis 管理員 Redis 編輯器 Redis 檢視器 |
讀取者 |
|
Redis 管理員 Redis 編輯器 Redis 檢視器 |
讀取者 |
|
Redis 管理員 | 寫入者 |
|
Redis 管理員 Redis 編輯器 |
寫入者 |
|
Redis 管理員 | 寫入者 |
|
Redis 管理員 | 寫入者 |
|
Redis 管理員 | 寫入者 |
|
Redis 管理員 | 寫入者 |
|
Redis 管理員 | 寫入者 |
|
Redis 管理員 | 寫入者 |
|
Redis 管理員 Redis 編輯器 Redis 檢視器 |
讀取者 |
|
Redis 管理員 Redis 編輯器 Redis 檢視器 |
讀取者 |
|
Redis 管理員 Redis 編輯器 Redis 檢視器 |
讀取者 |
|
Redis 管理員 Redis 編輯器 Redis 檢視器 |
讀取者 |
|
Redis 管理員 | 寫入者 |
自訂角色
如果預先定義的角色無法滿足您的獨特業務需求,您可以指定權限來定義自己的自訂角色。為了支援這方面的需求,身分與存取權管理提供自訂角色的功能。為 Memorystore for Redis 建立自訂角色時,請務必同時加入 resourcemanager.projects.get
和 resourcemanager.projects.list
。否則, Google Cloud 控制台將無法針對 Memorystore for Redis 正常運作。詳情請參閱「權限依附元件」。如要瞭解如何建立自訂角色,請參閱「建立自訂角色」。
Google Cloud 主控台中常見工作所需的權限
如要讓使用者透過 Google Cloud 控制台使用 Memorystore for Redis,使用者的角色必須包含 resourcemanager.projects.get
和 resourcemanager.projects.list
權限。
下表列出 Google Cloud 主控台中常見任務所需的其他權限:
工作 | 其他所需權限 |
---|---|
顯示執行個體清單頁面 |
|
建立及編輯執行個體 |
|
刪除執行個體 |
|
從 Cloud Shell 連線至執行個體 |
|
查看執行個體資訊 |
|
匯入及匯出 RDB 備份檔案 |
|
升級執行個體的 Redis 版本 |
|
gcloud 指令的所需權限
如要讓使用者使用 gcloud
指令操作 Memorystore for Redis,使用者角色必須具備 resourcemanager.projects.get
和 resourcemanager.projects.list
權限。
下表列出使用者在叫用 gcloud
指令時,必須具備的每個 gcloud redis
子指令權限:
指令 | 所需權限 |
---|---|
gcloud redis instances auth |
|
gcloud redis instances create |
|
gcloud redis instances delete |
|
gcloud redis instances update |
|
gcloud redis instances list |
|
gcloud redis instances describe |
|
gcloud redis instances import |
|
gcloud redis instances export |
|
gcloud redis instances upgrade |
|
gcloud redis operations list |
|
gcloud redis operations describe |
|
gcloud redis regions list |
|
gcloud redis regions describe |
|
gcloud redis zones list |
|
API 方法的所需權限
下表列出呼叫者呼叫 Memorystore for Redis API 中的每個方法,或使用使用該 API 的 Google Cloud 工具 (例如 Google Cloud 主控台或 gcloud
指令列工具) 執行工作時,必須具備的權限:
方法 | 所需權限 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Memorystore for Redis 服務帳戶
每個 Memorystore for Redis 執行個體都有一個服務帳戶,用於與其他 Google Cloud 資源通訊。
在某些情況下 (例如匯出或使用 CMEK),您必須為服務帳戶授予特定角色或權限。
Memorystore for Redis 服務帳戶格式
您的執行個體服務帳戶會使用兩種格式之一,具體取決於建立時間。
第一個格式如下:
PROJECT_NUMBER[email protected]
第二種格式如下:
service-PROJECT_NUMBER@cloud-redis.iam.gserviceaccount.com
已知問題
有時,使用 [PROJECT_NUMBER][email protected]
格式的服務帳戶可能會與貴機構政策相衝突。如需詳細資訊和解決問題的步驟,請參閱「使用網域限制共用功能的組織政策相關問題」。
查看執行個體的服務帳戶
如要查看執行個體的服務帳戶,請執行下列指令,並記下 persistenceIamIdentity
下方所列的服務帳戶:
gcloud redis instances describe [INSTANCE_ID] --region=[REGION]
Redis AUTH 權限
下表列出使用者完成部分 Memorystore for Redis 基本 AUTH 工作所需的最低權限。
所需權限 | 建立啟用 Redis AUTH 的 Memorystore 執行個體 | 在現有 Redis 執行個體上啟用 / 停用 AUTH | 查看 AUTH 字串 | 查看 Redis 執行個體是否已啟用 / 停用 AUTH |
---|---|---|---|---|
redis.instances.create
|
✓ | X | X | X |
redis.instances.update
|
X | ✓ | X | X |
redis.instances.get
|
X | X | X | ✓ |
redis.instances.updateAuth
|
✓ | ✓ | X | X |
redis.instances.getAuthString
|
X | X | ✓ | X |
傳輸中資料加密權限
下表列出啟用及管理 Memorystore for Redis 的傳輸中資料加密功能所需的權限。
所需權限 | 建立使用傳輸加密功能的 Memorystore 執行個體 | 下載憑證授權單位 |
---|---|---|
redis.instances.create
|
✓ | X |
redis.instances.get
|
X | ✓ |
維護政策權限
下表列出管理 Memorystore for Redis 維護政策所需的權限。
所需權限 | 建立啟用維護政策的 Memorystore 執行個體 | 在現有的 Memorystore 執行個體上建立或修改維護政策 | 查看維護政策設定 | 重新排定維護時間 |
---|---|---|---|---|
redis.instances.create
|
✓ | X | X | X |
redis.instances.update
|
X | ✓ | X | X |
redis.instances.get
|
X | X | ✓ | X |
redis.instances.rescheduleMaintenance
|
X | X | X | ✓ |
匯入和匯出所需的權限
使用自訂角色匯入及匯出資料時,需要兩個不同的自訂角色。一個使用者的自訂角色,以及 Redis 執行個體服務帳戶的額外自訂角色。服務帳戶的自訂角色會使用 Cloud Storage 值區層級權限。
如要找出執行個體的服務帳戶,請參閱「查看執行個體的服務帳戶」一文
服務帳戶的權限
請注意,您只需要在值區層級 (而非整個專案) 授予服務帳戶儲存空間權限。如需操作說明,請參閱「新增使用者主體至值區層級政策」。
授予服務帳戶值區層級權限後,您可以忽略「Memorystore 無法確認服務帳戶 [email protected] 是否擁有匯入/匯出作業所需的權限」訊息。如需確認或更新權限的相關協助,請與專案管理員聯絡。如需必要的權限,請參閱匯入/匯出權限的說明文件。」如果您將下列權限套用至使用者帳戶和服務帳戶的自訂角色,匯入/匯出作業就會成功。
服務帳戶自訂角色的權限 | 使用 gcloud 匯入 | 使用 gcloud 匯出 | 使用 Google Cloud 主控台匯入 | 使用 Google Cloud 控制台匯出 |
---|---|---|---|---|
storage.buckets.get |
✓ | ✓ | ✓ | ✓ |
storage.objects.get |
✓ | X | ✓ | X |
storage.objects.create |
X | ✓ | X | ✓ |
storage.objects.delete |
X | (非必要) (授予覆寫現有 RDB 檔案的權限)。 |
X | (非必要) (授予覆寫現有 RDB 檔案的權限)。 |
使用者帳戶的權限
使用者帳戶自訂角色的權限 | 使用 gcloud 匯入 | 使用 gcloud 匯出 | 使用 Google Cloud 主控台匯入 | 使用 Google Cloud 控制台匯出 |
---|---|---|---|---|
resourcemanager.projects.get |
X | X | ✓ | ✓ |
redis.instances.get |
✓ | ✓ | ✓ | ✓ |
redis.instances.list |
X | X | X | X |
redis.instances.import |
✓ | X | ✓ | X |
redis.instances.export |
X | ✓ | X | ✓ |
redis.operations.get |
X | ✓ | ✓ | ✓ |
redis.operations.list |
X | X | ✓ | ✓ |
redis.operations.cancel |
✓ | ✓ | ✓ | ✓ |
storage.buckets.list |
X | X | ✓ | ✓ |
storage.buckets.get |
X | X | ✓ | ✓ |
storage.objects.list |
X | X | ✓ | ✓ |
storage.objects.get |
X | X | ✓ | ✓ |