本頁面說明如何使用 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 資源的完整存取權和控管權;管理使用者存取權 |
|
編輯者 | 除了 *.getIamPolicy和.setIamPolicy以外的所有 redis 權限 |
具備所有 Google Cloud 和 Redis 資源的讀取/寫入權限 (具備完整的控管權限,但無法修改權限) |
|
檢視者 |
|
具備所有 Memorystore for 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-compute@第二種格式為:
service-PROJECT_NUMBER@cloud-redis.
已知問題
有時,使用 [PROJECT_NUMBER]-compute@ 格式的服務帳戶可能會與組織政策衝突。如需詳細資訊和解決問題的步驟,請參閱「網域限制共用組織政策的問題」。
查看執行個體的服務帳戶
如要查看執行個體的服務帳戶,請執行下列指令,並記下 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 bucket 層級權限。
如要查看執行個體的服務帳戶,請參閱「查看執行個體的服務帳戶」
服務帳戶權限
請注意,您只需要在 bucket 層級 (而非整個專案) 向服務帳戶授予儲存空間權限。如需操作說明,請參閱「將主體新增至 bucket 層級政策」。
授予服務帳戶 bucket 層級權限後,您可以忽略以下訊息:「Memorystore 無法確認服務帳戶 xxxx@xxxx. 是否具備匯入/匯出所需的權限。如需驗證或更新權限,請與專案管理員聯絡。如要瞭解必要權限,請參閱匯入/匯出權限說明文件。如果將下列權限套用至使用者帳戶和服務帳戶的自訂角色,匯入/匯出作業就會成功。
| 服務帳戶自訂角色的權限 | 透過 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 | ✓ | ✓ |