このページでは、Cloud SQL インスタンスを作成または編集して、ユーザー、サービス アカウント、またはグループで Cloud SQL IAM データベース認証を使用するように構成する手順について説明します。Cloud SQL IAM のインテグレーションの詳細については、IAM 認証をご覧ください。
新しく作成されたインスタンスには、次の 4 つのシステム データベースがあります。
information_schema
: データベース メタデータ(MySQL サーバーに関する情報)へのアクセスを提供します。mysql
: システム スキーマ。MySQL サーバーの実行時に必要な情報を格納するテーブルが含まれています。performance_schema
: MySQL サーバーの実行を低レベルでモニタリングする機能。sys
: DBA とデベロッパーがパフォーマンス スキーマによって収集されたデータの解釈に役立つ一連のオブジェクトが含まれています。
始める前に
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
ユーザー アカウントに Cloud SQL 管理者のロールと Compute 閲覧者のロールがあることを確認します。
ロールと権限について詳細を確認します。
IAM データベース認証に新しいインスタンスを構成する
IAM データベース認証用に新しい Cloud SQL インスタンスを構成するには、cloudsql_iam_authentication
フラグを有効にする必要があります。このフラグを有効にすると、Cloud SQL インスタンスに IAM ユーザー、サービス アカウント、またはグループを追加できます。
IAM データベース認証を使用するように新しい Cloud SQL インスタンスを構成するには:
コンソール
-
Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。
- [インスタンスを作成] をクリックします。
- [MySQL を選択] をクリックします。
- インスタンス ID の名前を入力します。 インスタンス名には機密情報や個人を特定できる情報を含めないでください。インスタンス名は外部から閲覧可能です。インスタンス名にプロジェクト ID を含める必要はありません。プロジェクト ID は必要に応じて自動的に含まれます(ログファイルの場合など)。
- root ユーザーのパスワードを入力します。
- [データベースのバージョン] メニューで、データベースのバージョンを選択します。
- [リージョンとゾーンの可用性の選択] セクションで、インスタンスのリージョンとゾーンを選択します。インスタンスにアクセスするリソースと同じリージョンにインスタンスを配置します。選択したリージョンは後から変更できません。通常、ゾーンを指定する必要はありません。
- [インスタンスのカスタマイズ] セクションで [構成オプションを表示] をクリックし、[フラグ] を開きます。
- [フラグを追加] をクリックします。
- [フラグを選択] メニューから、
cloudsql_iam_authentication
フラグを選択します。このフラグの値として [オン] が選択されていることを確認し、[完了] をクリックします。 - 必要に応じて、他のインスタンス設定を構成します。設定の詳細については、設定をご覧ください。
- [インスタンスを作成] をクリックします。
gcloud
--database-flags
パラメータを cloudsql_iam_authentication=on
に設定して gcloud sql instances create
を実行します。
次のように置き換えます。
- INSTANCE_NAME: 新しいインスタンスの名前。
- MYSQL_VERSION: MySQL のバージョン(MYSQL_5_7、MYSQL_8_0 など)。
- NUMBER_OF_CORES: マシン内のコア数。
- AMOUNT_OF_MEMORY: マシン内のメモリ量。サイズ単位を指定します(3,072 MiB、9 GiB など)。
- ZONE: 目的の Compute Engine ゾーン(us-central1-a、us-central1-b など)。
- PASSWORD: root ユーザーのパスワードを作成します。
gcloud sql instances create INSTANCE_NAME \ --database-version=MYSQL_VERSION \ --cpu=NUMBER_OF_CORES \ --memory=AMOUNT_OF_MEMORY \ --zone=ZONE_NAME \ --root-password=PASSWORD \ --database-flags=cloudsql_iam_authentication=on
Terraform
IAM データベース認証を有効にしてインスタンスを作成するには、Terraform リソースを使用します。
変更を適用する
Google Cloud プロジェクトで Terraform 構成を適用するには、次のセクションの手順を完了します。
Cloud Shell を準備する
- Cloud Shell を起動します。
-
Terraform 構成を適用するデフォルトの Google Cloud プロジェクトを設定します。
このコマンドは、プロジェクトごとに 1 回だけ実行する必要があります。これは任意のディレクトリで実行できます。
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Terraform 構成ファイルに明示的な値を設定すると、環境変数がオーバーライドされます。
ディレクトリを準備する
Terraform 構成ファイルには独自のディレクトリ(ルート モジュールとも呼ばれます)が必要です。
-
Cloud Shell で、ディレクトリを作成し、そのディレクトリ内に新しいファイルを作成します。ファイル名の拡張子は
.tf
にする必要があります(例:main.tf
)。このチュートリアルでは、このファイルをmain.tf
とします。mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
チュートリアルを使用している場合は、各セクションまたはステップのサンプルコードをコピーできます。
新しく作成した
main.tf
にサンプルコードをコピーします。必要に応じて、GitHub からコードをコピーします。Terraform スニペットがエンドツーエンドのソリューションの一部である場合は、この方法をおすすめします。
- 環境に適用するサンプル パラメータを確認し、変更します。
- 変更を保存します。
-
Terraform を初期化します。これは、ディレクトリごとに 1 回だけ行います。
terraform init
最新バージョンの Google プロバイダを使用する場合は、
-upgrade
オプションを使用します。terraform init -upgrade
変更を適用する
-
構成を確認して、Terraform が作成または更新するリソースが想定どおりであることを確認します。
terraform plan
必要に応じて構成を修正します。
- 次のコマンドを実行します。プロンプトで「
yes
」と入力して、Terraform 構成を適用します。terraform apply
Terraform に「Apply complete!」というメッセージが表示されるまで待ちます。
- Google Cloud プロジェクトを開いて結果を表示します。Google Cloud コンソールの UI でリソースに移動して、Terraform によって作成または更新されたことを確認します。
変更を削除する
変更を削除するには、次の操作を行います。
- 削除の保護を無効にするには、Terraform 構成ファイルで
deletion_protection
引数をfalse
に設定します。deletion_protection = "false"
- 次のコマンドを実行します。プロンプトで「
yes
」と入力して、更新された Terraform 構成を適用します。terraform apply
-
以前に Terraform 構成で適用されたリソースを削除するために、次のコマンドを実行してプロンプトで「
yes
」と入力します。terraform destroy
REST v1
インスタンス名には機密情報や個人を特定できる情報(PII)を含めないでください。インスタンス名は外部から閲覧可能です。
インスタンス名にプロジェクト ID を含める必要はありません。プロジェクト ID は必要に応じて自動的に含まれます(ログファイルの場合など)。
リクエストのデータを使用する前に、次のように置き換えます。
- INSTANCE_ID: 目的のインスタンス ID
- REGION: 目的のリージョン(us-east-1 など)
- PROJECT_ID: プロジェクト ID
- LOCATION_ID: ロケーション ID
- DATABASE_VERSION: データベース バージョンの列挙型文字列。例:
MYSQL_8_0
- PASSWORD: root ユーザーのパスワード
- MACHINE_TYPE: マシン(階層)タイプの列挙型文字列(例:
db-custom-[CPUS]-[MEMORY_MBS]
)
HTTP メソッドと URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/instances
リクエストの本文(JSON):
{ "name": "INSTANCE_ID", "region": "REGION", "databaseVersion": "DATABASE_VERSION", "rootPassword": "PASSWORD", "settings": { "tier": "MACHINE_TYPE", "backupConfiguration": { "enabled": true }, "databaseFlags": [ { "name": "cloudsql_iam_authentication", "value": "on" } ] } }
リクエストを送信するには、次のいずれかのオプションを開きます。
次のような JSON レスポンスが返されます。
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-01T19:13:21.834Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
REST v1beta4
インスタンス名には機密情報や個人を特定できる情報(PII)を含めないでください。インスタンス名は外部から閲覧可能です。
インスタンス名にプロジェクト ID を含める必要はありません。プロジェクト ID は必要に応じて自動的に含まれます(ログファイルの場合など)。
リクエストのデータを使用する前に、次のように置き換えます。
- INSTANCE_ID: 目的のインスタンス ID
- REGION: 目的のリージョン(us-east-1 など)
- PROJECT_ID: プロジェクト ID
- LOCATION_ID: ロケーション ID
- DATABASE_VERSION: データベース バージョンの列挙型文字列。例:
MYSQL_8_0
- PASSWORD: root ユーザーのパスワード
- MACHINE_TYPE: マシン(階層)タイプの列挙型文字列(例:
db-custom-[CPUS]-[MEMORY_MBS]
)
HTTP メソッドと URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/locations/LOCATION_ID/instances
リクエストの本文(JSON):
{ "name": "INSTANCE_ID", "region": "REGION", "databaseVersion": "DATABASE_VERSION", "rootPassword": "PASSWORD", "settings": { "tier": "MACHINE_TYPE", "backupConfiguration": { "enabled": true }, "databaseFlags": [ { "name": "cloudsql_iam_authentication", "value": "on" } ] } }
リクエストを送信するには、次のいずれかのオプションを開きます。
次のような JSON レスポンスが返されます。
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-01T19:13:21.834Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
IAM データベース認証に既存のインスタンスを構成する
IAM データベース認証用に既存の Cloud SQL インスタンスを構成するには、cloudsql_iam_authentication
フラグを有効にする必要があります。このフラグを有効にすると、Cloud SQL インスタンスに IAM ユーザー、サービス アカウント、またはグループを追加できます。
IAM データベース認証を使用するように既存の Cloud SQL インスタンスを構成するには:
コンソール
-
Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。
- インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
- [編集] をクリックします。
- [インスタンスのカスタマイズ] セクションで、[フラグ] を開きます。
- [フラグを追加] をクリックします。
- [フラグを選択] メニューから、
cloudsql_iam_authentication
フラグを選択します。このフラグの値として [オン] が選択されていることを確認し、[完了] をクリックします。 - 必要に応じて、他のインスタンス設定を構成します。設定の詳細については、設定をご覧ください。
- [保存] をクリックします。
gcloud
gcloud CLI のインストールと使用開始については、gcloud CLI をインストールするをご覧ください。Cloud Shell の起動については、Cloud Shell を使用するをご覧ください。
この手順では、
gcloud
sql instances patch
を使用します。
次のように置き換えます。
- INSTANCE_NAME: 新しいインスタンスの名前。
gcloud sql instances patch INSTANCE_NAME \ --database-flags=cloudsql_iam_authentication=on
これにより、他の既存のデータベース フラグの設定がリセットされます。データベース フラグの設定方法について詳しくは、データベース フラグを設定するをご覧ください。
REST v1
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: プロジェクト ID
- LOCATION_ID: ロケーション ID
- INSTANCE_ID: 目的のインスタンス ID
- REGION: 目的のリージョン
- DATABASE_VERSION: データベース バージョンの列挙型文字列。例:
MYSQL_8_0
- PASSWORD: root ユーザーのパスワード
- MACHINE_TYPE: マシン(階層)タイプの列挙型文字列(例:
db-custom-[CPUS]-[MEMORY_MBS]
)
HTTP メソッドと URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/instances
リクエストの本文(JSON):
{ "name": "INSTANCE_ID", "region": "REGION", "databaseVersion": "DATABASE_VERSION", "rootPassword": "PASSWORD", "settings": { "tier": "MACHINE_TYPE", "backupConfiguration": { "enabled": true } "databaseFlags": [ { "name": "cloudsql_iam_authentication", "value": "on" } ] } }
リクエストを送信するには、次のいずれかのオプションを開きます。
次のような JSON レスポンスが返されます。
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-01T19:13:21.834Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
REST v1beta4
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: プロジェクト ID
- LOCATION_ID: ロケーション ID
- INSTANCE_ID: 目的のインスタンス ID
- REGION: 目的のリージョン
- DATABASE_VERSION: データベース バージョンの列挙型文字列。例:
MYSQL_8_0
- PASSWORD: root ユーザーのパスワード
- MACHINE_TYPE: マシン(階層)タイプの列挙型文字列(例:
db-custom-[CPUS]-[MEMORY_MBS]
)
HTTP メソッドと URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/locations/LOCATION_ID/instances
リクエストの本文(JSON):
{ "name": "INSTANCE_ID", "region": "REGION", "databaseVersion": "DATABASE_VERSION", "rootPassword": "PASSWORD", "settings": { "tier": "MACHINE_TYPE", "backupConfiguration": { "enabled": true } "databaseFlags": [ { "name": "cloudsql_iam_authentication", "value": "on" } ] } }
リクエストを送信するには、次のいずれかのオプションを開きます。
次のような JSON レスポンスが返されます。
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-01T19:13:21.834Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
次のステップ
- IAM データベース認証について学習する。
- IAM データベース認証のリードレプリカ ログインを構成する方法を学習する。
- Cloud SQL IAM データベース認証を使用するユーザーとサービス アカウントを作成する方法を学習する。
- ユーザーまたはサービス アカウントに IAM バインディングを追加する方法を学習する。
- IAM データベース認証を使用して Cloud SQL データベースにログインする方法を学習する。
- IAM データベース認証のユーザー アカウントとサービスを管理する方法を学習する。