このページでは、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 のロールと同じような細かい制御はできません。特に、基本ロールでは Memorystore for Redis だけではなく、Google Cloud全体のリソースへのアクセスが提供されます。基本ロールの詳細については、基本ロールをご覧ください。
権限と役割
このセクションでは、Memorystore for Redis でサポートされる権限とロールについて簡単に説明します。
事前定義ロール
Memorystore for Redis には、プリンシパルにきめ細かい権限を付与するために使用できる事前定義ロールがいくつか用意されています。プリンシパルにロールを付与することで、プリンシパルが行えるアクションを制御できます。プリンシパルは、個人、グループ、またはサービス アカウントのいずれかです。
同じプリンシパルに複数のロールを付与できます。または、そうする権限を持っている場合、プリンシパルに付与されているロールを、いつでも変更できます。
広範囲な役割には、より限定的に定義された役割が含まれます。たとえば、Redis 編集者の役割には Redis 閲覧者のすべての権限に加え、Redis 編集者用に追加された権限が含まれています。同様に、Redis 管理者の役割には Redis 編集者の役割と、管理者用に追加された権限が含まれています。
基本ロール(オーナー、編集者、閲覧者)は、 Google Cloud全体に対する権限を付与します。Memorystore for Redis に固有のロールは、一般的な Google Cloud の使用に必要な次の Google Cloud 権限を除き、Memorystore for Redis 権限のみを付与します。
resourcemanager.projects.get
resourcemanager.projects.list
次の表��、Memorystore for Redis で使用可能な事前定義ロールと、その Memorystore for Redis 権限を示したものです。
| ロール | 名前 | Redis の権限 | 説明 |
|---|---|---|---|
|
オーナー |
|
すべての Google Cloud リソースに対する完全アクセス権と制御。ユーザー アクセスの管理 |
|
編集者 | すべての redis 権限( *.getIamPolicy と .setIamPolicy を除く) |
すべての 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 管理者 | ライター |
カスタムの役割
事前定義された役割がお客様特有のビジネス要件に合っていない場合は、任意に指定した権限を含むカスタムの役割を独自に定義できます。これをサポートするために、IAM にはカスタムの役割が用意されています。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 redis サブコマンドごとに gcloud コマンドを呼び出すユーザーに必要な権限を示しています。
| コマンド | 必要な権限 |
|---|---|
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 サービス アカウントの形式
インスタンスのサービス アカウントは、作成されたタイミングによって 2 つの異なる形式のいずれかを使用します。
1 つ目の形式は次のとおりです。
PROJECT_NUMBER-compute@2 つ目の形式は次のとおりです。
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 | ✓ |
インポートとエクスポートに必要な権限
インポートとエクスポートにカスタムロールを使用するには、別の 2 つのカスタムロールが必要です。1 つはユーザー用のカスタムロールで、もう 1 つは Redis インスタンスのサービス アカウント用のカスタムロールです。サービス アカウント用のカスタムロールは、Cloud Storage バケットレベルの権限を使用します。
インスタンスのサービス アカウントを確認するには、インスタンスのサービス アカウントを確認するをご覧ください。
サービス アカウントの権限
ストレージ権限は、サービス アカウントに対して、プロジェクト全体ではなくバケットレベルでのみ付与する必要があることに留意してください。手順については、バケットレベルのポリシーにプリンシパルを追加するをご覧ください。
サービス アカウントにバケットレベルの権限を付与すると、「メモリストアは、サービス アカウント 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 | ✓ | ✓ |
次のステップ
- アクセス権の付与と取り消しの方法を学習する。
- IAM の詳細について学習する。
- カスタムの役割について学習する。