使用 IAM 控管存取權

本頁面說明如何使用 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 權限 說明

roles/owner

擁有者

redis.*

對於所有 Google Cloud 資源具有完整存取權與控管權,可管理使用者存取權

roles/editor

編輯者 所有 redis 權限 (除了 *.getIamPolicy.setIamPolicy) 具備所有 Google Cloud 和 Redis 資源的讀取/寫入權限 (具備完整的控管權限,但無法修改權限)

roles/viewer

檢視者

redis.*.get redis.*.list

具備所有 Google Cloud 資源的唯讀存取權,包括 Redis 資源

roles/redis.admin

Redis 管理員

redis.*

可完整控制所有 Memorystore for Redis 資源。

roles/redis.editor

Redis 編輯者 所有 redis 權限,除了

redis.instances.create redis.instances.delete redis.instances.upgrade redis.instances.import redis.instances.export redis.instances.updateAuth redis.instances.getAuthString redis.operations.delete

管理 Memorystore for Redis 執行個體。但無法建立或刪除執行個體

roles/redis.viewer

Redis 檢視者 所有 redis 權限,除了

redis.instances.create redis.instances.delete redis.instances.update redis.instances.upgrade redis.instances.import redis.instances.export redis.instances.updateAuth redis.instances.getAuthString redis.operations.delete

具備所有 Memorystore for Redis 資源的唯讀存取權。

權限與角色

下表列出 Memorystore for Redis 支援的每項權限,以及包含這些權限的 Memorystore for Redis 角色:

權限 Redis 角色 基本角色

redis.instances.list

Redis 管理員
Redis 編輯器
Redis 檢視器
讀取者

redis.instances.get

Redis 管理員
Redis 編輯器
Redis 檢視器
讀取者

redis.instances.create

Redis 管理員 寫入者

redis.instances.update

Redis 管理員
Redis 編輯器
寫入者

redis.instances.updateAuth

Redis 管理員 寫入者

redis.instances.getAuthString

Redis 管理員 寫入者

redis.instances.delete

Redis 管理員 寫入者

redis.instances.upgrade

Redis 管理員 寫入者

redis.instances.import

Redis 管理員 寫入者

redis.instances.export

Redis 管理員 寫入者

redis.locations.list

Redis 管理員
Redis 編輯器
Redis 檢視器
讀取者

redis.locations.get

Redis 管理員
Redis 編輯器
Redis 檢視器
讀取者

redis.operations.list

Redis 管理員
Redis 編輯器
Redis 檢視器
讀取者

redis.operations.get

Redis 管理員
Redis 編輯器
Redis 檢視器
讀取者

redis.operations.delete

Redis 管理員 寫入者

自訂角色

如果預先定義的角色無法滿足您的獨特業務需求,您可以指定權限來定義自己的自訂角色。為了支援這方面的需求,身分與存取權管理提供自訂角色的功能。為 Memorystore for Redis 建立自訂角色時,請務必同時加入 resourcemanager.projects.getresourcemanager.projects.list。否則, Google Cloud 控制台將無法針對 Memorystore for Redis 正常運作。詳情請參閱「權限依附元件」。如要瞭解如何建立自訂角色,請參閱「建立自訂角色」。

Google Cloud 主控台中常見工作所需的權限

如要讓使用者透過 Google Cloud 控制台使用 Memorystore for Redis,使用者的角色必須包含 resourcemanager.projects.getresourcemanager.projects.list 權限。

下表列出 Google Cloud 主控台中常見任務所需的其他權限:

工作 其他所需權限
顯示執行個體清單頁面

redis.instances.get
redis.instances.list

建立及編輯執行個體

redis.instances.create
redis.instances.get
redis.instances.list
compute.networks.list

刪除執行個體

redis.instances.delete
redis.instances.get
redis.instances.list

從 Cloud Shell 連線至執行個體

redis.instances.get
redis.instances.list
redis.instances.update

查看執行個體資訊

redis.instances.get
monitoring.timeSeries.list

匯入及匯出 RDB 備份檔案

redis.instances.import
redis.instances.export

升級執行個體的 Redis 版本

redis.instances.upgrade

gcloud 指令的所需權限

如要讓使用者使用 gcloud 指令操作 Memorystore for Redis,使用者角色必須具備 resourcemanager.projects.getresourcemanager.projects.list 權限。

下表列出使用者在叫用 gcloud 指令時,必須具備的每個 gcloud redis 子指令權限:

指令 所需權限
gcloud redis instances auth

redis.instances.updateAuth
redis.instances.getAuthString

gcloud redis instances create

redis.instances.get
redis.instances.create

gcloud redis instances delete

redis.instances.delete

gcloud redis instances update

redis.instances.get
redis.instances.update

gcloud redis instances list

redis.instances.list

gcloud redis instances describe

redis.instances.get

gcloud redis instances import

redis.instances.import

gcloud redis instances export

redis.instances.export

gcloud redis instances upgrade

redis.instances.upgrade

gcloud redis operations list

redis.operations.list

gcloud redis operations describe

redis.operations.get

gcloud redis regions list

redis.locations.list

gcloud redis regions describe

redis.locations.get

gcloud redis zones list

redis.locations.list

API 方法的所需權限

下表列出呼叫者呼叫 Memorystore for Redis API 中的每個方法,或使用使用該 API 的 Google Cloud 工具 (例如 Google Cloud 主控台或 gcloud指令列工具) 執行工作時,必須具備的權限:

方法 所需權限

locations.get

redis.locations.get

locations.list

redis.locations.list

instances.create

redis.instances.create

instances.delete

redis.instances.delete

instances.get

redis.instances.get

instances.list

redis.instances.list

instances.patch

redis.instances.update

instances.import

redis.instances.import

instances.export

redis.instances.export

instances.upgrade

redis.instances.upgrade

operations.get

redis.operations.get

operations.list

redis.operations.list

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

後續步驟