プロジェクトのアクセス制御

このページでは、Identity and Access Management(IAM)を使用して Cloud SQL プロジェクトへのアクセスと権限を制御する方法について説明します。

概要

Google Cloud には Identity and Access Management(IAM)機能があり、特定の Google Cloud リソースに対するアクセス権を詳細に設定できるため、他のリソースへの不要なアクセスを防ぐことができます。このページでは、Cloud SQL IAM の役割と権限について説明します。Google Cloud IAM の詳細については、IAM のドキュメントをご覧ください。

Cloud SQL リソースへのアクセス権を制御できるように、Cloud SQL には事前定義ロールが用意されています。事前定義ロールの中に必要な権限を付与するものがない場合は、カスタムロールを独自に作成することもできます。また、従来の基本ロール(編集者、閲覧者、オーナー)もまだ使用できますが、Cloud SQL ロールほど細かい制御はできません。特に、基本ロールは Cloud SQL だけではなく、Google Cloud 全体のリソースへのアクセスを提供します。基本ロールの詳細については、基本ロールをご覧ください。

権限と役割

ここでは、Cloud SQL でサポートされる権限とロールを簡単に説明します。

事前定義の役割

Cloud SQL にはいくつかの事前定義された役割が用意され、それらを使用してプロジェクトのメンバーに対する権限付与を詳細に設定できます。プロジェクトのメンバーに役割を付与することで、そのメンバーが実行できるアクションを制御できます。プロジェクト メンバーは、個人、グループ、サービス アカウントのいずれかです。

複数の役割を同じプロジェクト メンバーに付与できます。また、実行する権限を持っている場合、プロジェクト メンバーに付与されている役割をいつでも変更できます。

広範囲な役割には、より限定的に定義された役割が含まれます。たとえば、Cloud SQL 編集者の役割には Cloud SQL 閲覧者の役割のすべての権限と、Cloud SQL 編集者の役割の追加的な権限が含まれています。同様に、Cloud SQL 管理者の役割には、Cloud SQL 編集者の役割のすべての権限と、追加的な権限が含まれています。

基本ロール(オーナー、編集者、閲覧者)は、Google Cloud 全体に対する権限を付与します。Cloud SQL に固有のロールは、Cloud SQL の権限のみを付与します。ただし、Google Cloud の一般的な使用に必要な次の Google Cloud 権限を除きます。

  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • serviceusage.quotas.get
  • serviceusage.services.get
  • serviceusage.services.use

次の表に、Cloud SQL で使用可能な事前定義ロールとその Cloud SQL の権限を示します。

役割 名前 Cloud SQL の権限 説明
roles/owner オーナー cloudsql.* すべての Google Cloud リソースに対する完全アクセス権と制御。ユーザー アクセスの管理。
roles/editor 編集者 以下を除くすべての cloudsql 権限
cloudsql.*.getIamPolicy
cloudsql.*.setIamPolicy
すべての Google Cloud および Cloud SQL リソースへの読み取り / 書き込みアクセス権(権限を変更する能力以外のすべての制御)
roles/viewer 閲覧者 cloudsql.*.export
cloudsql.*.get
cloudsql.*.list
Cloud SQL リソースを含む、すべての Google Cloud リソースへの読み取り専用アクセス権
roles/cloudsql.admin Cloud SQL 管理者 cloudsql.* すべての Cloud SQL リソースに対する完全な制御
roles/cloudsql.editor Cloud SQL 編集者 cloudsql.instances.addServerCa
cloudsql.instances.connect
cloudsql.instances.export
cloudsql.instances.failover
cloudsql.instances.get
cloudsql.instances.list
cloudsql.instances.listServerCas
cloudsql.instances.restart
cloudsql.instances.rotateServerCa
cloudsql.instances.truncateLog
cloudsql.instances.update
cloudsql.databases.create
cloudsql.databases.get
cloudsql.databases.list
cloudsql.databases.update
cloudsql.backupRuns.create
cloudsql.backupRuns.get
cloudsql.backupRuns.list
cloudsql.sslCerts.get
cloudsql.sslCerts.list
cloudsql.users.list
Cloud SQL リソースを管理します。表示、変更権限なし。ユーザーまたは sslCerts の変更権限なし。バックアップからのデータのインポートまたは復元の権限なし。インスタンスのクローン作成、削除、プロモートの権限なし。レプリケーションの開始または停止の権限なし。データベースの削除、レプリケーション、バックアップの権限なし。
roles/cloudsql.viewer Cloud SQL 閲覧者 cloudsql.*.export
cloudsql.*.get
cloudsql.*.list
cloudsql.instances.listServerCa
すべての Cloud SQL リソースに対する読み取り専用アクセス権。
roles/cloudsql.client Cloud SQL クライアント cloudsql.instances.connect
cloudsql.instances.get
App Engine と Cloud SQL Proxy から Cloud SQL インスタンスへの接続アクセス権。IP アドレスを使用してインスタンスにアクセスする必要なし。

権限と役割

次の表に、Cloud SQL がサポートしている各権限と、それを含む Cloud SQL のロール、その基本ロールを示します。

権限 Cloud SQL のロール 以前のロール
cloudsql.backupRuns.create Cloud SQL 管理者
Cloud SQL 編集者
編集者
cloudsql.backupRuns.delete Cloud SQL 管理者 編集者
cloudsql.backupRuns.get Cloud SQL 管理者
Cloud SQL 編集者
Cloud SQL 閲覧者
閲覧者
cloudsql.backupRuns.list Cloud SQL 管理者
Cloud SQL 編集者
Cloud SQL 閲覧者
閲覧者
cloudsql.databases.create Cloud SQL 管理者
Cloud SQL 編集者
編集者
cloudsql.databases.delete Cloud SQL 管理者
Cloud SQL 編集者
編集者
cloudsql.databases.get Cloud SQL 管理者
Cloud SQL 編集者
Cloud SQL 閲覧者
閲覧者
cloudsql.databases.getIamPolicy Cloud SQL 管理者 オーナー
cloudsql.databases.list Cloud SQL 管理者
Cloud SQL 編集者
Cloud SQL 閲覧者
閲覧者
cloudsql.databases.setIamPolicy Cloud SQL 管理者 オーナー
cloudsql.databases.update Cloud SQL 管理者
Cloud SQL 編集者
編集者
cloudsql.instance.addServerCa Cloud SQL 管理者
Cloud SQL 編集者
編集者
cloudsql.instances.clone Cloud SQL 管理者 編集者
cloudsql.instances.connect Cloud SQL 管理者
Cloud SQL クライアント
Cloud SQL 編集者
編集者
cloudsql.instances.create Cloud SQL 管理者
Cloud SQL 編集者
編集者
cloudsql.instances.delete Cloud SQL 管理者 編集者
cloudsql.instances.demoteMaster Cloud SQL 管理者 編集者
cloudsql.instances.export Cloud SQL 管理者
Cloud SQL 編集者
Cloud SQL 閲覧者
閲覧者
cloudsql.instances.failover Cloud SQL 管理者
Cloud SQL 編集者
編集者
cloudsql.instances.get Cloud SQL 管理者
Cloud SQL クライアント
Cloud SQL 編集者
Cloud SQL 閲覧者
閲覧者
cloudsql.instances.getIamPolicy Cloud SQL 管理者 オーナー
cloudsql.instances.import Cloud SQL 管理者 編集者
cloudsql.instances.list Cloud SQL 管理者
Cloud SQL 編集者
Cloud SQL 閲覧者
閲覧者
cloudsql.instance.listServerCa Cloud SQL 閲覧者 閲覧者
cloudsql.instances.promoteReplica Cloud SQL 管理者 編集者
cloudsql.instances.resetSslConfig Cloud SQL 管理者 編集者
cloudsql.instances.restart Cloud SQL 管理者
Cloud SQL 編集者
編集者
cloudsql.instances.restoreBackup Cloud SQL 管理者 編集者
cloudsql.instance.rotateServerCa Cloud SQL 管理者
Cloud SQL 編集者
編集者
cloudsql.instances.setIamPolicy Cloud SQL 管理者 オーナー
cloudsql.instances.startReplica Cloud SQL 管理者 編集者
cloudsql.instances.stopReplica Cloud SQL 管理者 編集者
cloudsql.instances.truncateLog Cloud SQL 管理者
Cloud SQL 編集者
編集者
cloudsql.instances.update Cloud SQL 管理者
Cloud SQL 編集者
編集者
cloudsql.sslCerts.create Cloud SQL 管理者 編集者
cloudsql.sslCerts.delete Cloud SQL 管理者
Cloud SQL 編集者
編集者
cloudsql.sslCerts.get Cloud SQL 管理者
Cloud SQL 編集者
Cloud SQL 閲覧者
閲覧者
cloudsql.sslCerts.list Cloud SQL 管理者
Cloud SQL 編集者
Cloud SQL 閲覧者
閲覧者
cloudsql.users.create Cloud SQL 管理者
Cloud SQL 編集者
編集者
cloudsql.users.delete Cloud SQL 管理者
Cloud SQL 編集者
編集者
cloudsql.users.list Cloud SQL 管理者
Cloud SQL 編集者
Cloud SQL 閲覧者
閲覧者
cloudsql.users.update Cloud SQL 管理者 編集者

カスタムロール

事前定義された役割がお客様特有のビジネス要件に合っていない場合は、任意に指定した権限を含むカスタムの役割を独自に定義できます。これをサポートするため、IAM にはカスタムの役割が用意されています。

Cloud SQL 用にカスタムの役割を作成するとき、cloudsql.instances.listcloudsql.instances.get のどちらか一方を含める場合は必ずその両方を含めてください。そうしなければ、Cloud Console が Cloud SQL に対して正しく機能しません。

Cloud Console での一般的なタスクに必要な権限

タスク 必要な追加の権限
インスタンスの一覧ページを表示する cloudsql.instances.list
resourcemanager.projects.get
インスタンスを作成する cloudsql.instances.create
cloudsql.instances.get
cloudsql.instances.list
resourcemanager.projects.get
Cloud Shell からインスタンスに接続する cloudsql.instances.get
cloudsql.instances.list
cloudsql.instances.update
resourcemanager.projects.get
ユーザーを作成する cloudsql.instances.get
cloudsql.instances.list
cloudsql.users.create
cloudsql.users.list
resourcemanager.projects.get
インスタンス情報を表示する cloudsql.instances.get
cloudsql.instances.list
cloudsql.users.list
monitoring.timeSeries.list
resourcemanager.projects.get

gcloud sql コマンドに必要な権限

コマンド 必要な権限
gcloud sql backups create cloudsql.backupRuns.create
gcloud sql backups delete cloudsql.backupRuns.delete
gcloud sql backups describe cloudsql.backupRuns.get
gcloud sql backups list cloudsql.backupRuns.list
gcloud sql backups restore cloudsql.backupRuns.get
cloudsql.instances.restoreBackup
gcloud sql connect cloudsql.instances.get
cloudsql.instances.update
gcloud sql databases create cloudsql.databases.create
gcloud sql databases delete cloudsql.databases.delete
gcloud sql databases describe cloudsql.databases.get
gcloud sql databases list cloudsql.databases.list
gcloud sql databases patch cloudsql.databases.get
cloudsql.databases.update
gcloud sql export cloudsql.instances.export
cloudsql.instances.get
gcloud sql flags list なし
gcloud sql import cloudsql.instances.import
gcloud sql instances clone cloudsql.instances.clone
gcloud sql instances create cloudsql.instances.create
gcloud sql instances delete cloudsql.instances.delete
gcloud sql instances describe cloudsql.instances.get
gcloud sql instances export cloudsql.instances.export
gcloud sql instances failover cloudsql.instances.failover
gcloud sql instances import cloudsql.instances.import
gcloud sql instances list cloudsql.instances.list
gcloud sql instances patch cloudsql.instances.get
cloudsql.instances.update
gcloud sql instances promote-replica cloudsql.instances.promoteReplica
gcloud sql instances reset-ssl-config cloudsql.instances.resetSslConfig
gcloud sql instances restart cloudsql.instances.restart
gcloud sql instances restore-backup cloudsql.backupRuns.get
cloudsql.instances.restoreBackup
gcloud sql operations describe cloudsql.instances.get
gcloud sql operations list cloudsql.instances.get
gcloud sql operations wait cloudsql.instances.get
gcloud sql ssl client-certs create cloudsql.sslCerts.create
gcloud sql ssl client-certs delete cloudsql.sslCerts.delete
gcloud sql ssl client-certs describe cloudsql.sslCerts.list
gcloud sql ssl client-certs list cloudsql.sslCerts.list
gcloud sql tiers list なし
gcloud sql users create cloudsql.users.create
gcloud sql users delete cloudsql.users.delete
gcloud sql users list cloudsql.users.list
gcloud sql users set-password cloudsql.users.update

API メソッドに必要な権限

次の表に、呼び出し元が Cloud SQL Admin API の各メソッドを呼び出すため、または API を使用する Google Cloud ツール(Google Cloud Console や gcloud コマンドライン ツールなど)を使用してタスクを実行するために必要な権限を示します。

権限はすべてプロジェクトに適用されます。インスタンスまたはその他の下位レベルのオブジェクトに由来する別の権限を適用することはできません。

メソッド 必要な権限
backupRuns.delete cloudsql.backupRuns.delete
backupRuns.get cloudsql.backupRuns.get
backupRuns.insert cloudsql.backupRuns.create
backupRuns.list cloudsql.backupRuns.list
databases.delete cloudsql.databases.delete
databases.get cloudsql.databases.get
databases.insert cloudsql.databases.create
databases.list cloudsql.databases.list
databases.patch cloudsql.databases.updatecloudsql.databases.get
databases.update cloudsql.databases.update
flags.list なし
instances.clone cloudsql.instances.clone
instances.delete cloudsql.instances.delete
instances.export cloudsql.instances.export
instances.failover cloudsql.instances.failover
instances.get cloudsql.instances.get
instances.import cloudsql.instances.import
instances.insert cloudsql.instances.create
instances.list cloudsql.instances.list
instances.patch cloudsql.instances.getcloudsql.instances.update
instances.promoteReplica cloudsql.instances.promoteReplica
instances.resetSslConfig cloudsql.instances.resetSslConfig
instances.restart cloudsql.instances.restart
instances.restoreBackup cloudsql.instances.restoreBackupcloudsql.backupRuns.get
instances.startReplica cloudsql.instances.startReplica
instances.stopReplica cloudsql.instances.stopReplica
instances.truncateLog cloudsql.instances.truncateLog
instances.update cloudsql.instances.update
operations.get cloudsql.instances.get
operations.list cloudsql.instances.get
sslCerts.delete cloudsql.sslCerts.delete
sslCerts.get cloudsql.sslCerts.get
sslCerts.insert cloudsql.sslCerts.create
sslCerts.list cloudsql.sslCerts.list
users.delete cloudsql.users.delete
users.insert cloudsql.users.create
users.list cloudsql.users.list
users.update cloudsql.users.update

MySQL IAM での Cloud SQL の管理

Google Cloud Console、API の IAM メソッド、または Cloud SDK を使用して IAM のポリシーと役割を取得、設定できます。詳細については、プロジェクト メンバーに対するアクセス権の付与、変更、取り消しをご覧ください。

次のステップ