IAM データベース認証用に新規または既存のインスタンスを構成する

このページでは、Cloud SQL インスタンスを作成または編集して、ユーザーまたはサービス アカウントで Cloud SQL IAM データベース認証を使用するように構成する手順について説明します。Cloud SQL IAM のインテグレーションの詳細については、IAM 認証をご覧ください。

新しく作成されたインスタンスには、次の 4 つのシステム データベースがあります。

  • information_schema: データベース メタデータ(MySQL サーバーに関する情報)へのアクセスを提供します。
  • mysql: システム スキーマ。MySQL サーバーの実行時に必要な情報を格納するテーブルが含まれています。
  • performance_schema: MySQL サーバーの実行を低レベルでモニタリングする機能。
  • sys: DBA とデベロッパーがパフォーマンス スキーマによって収集されたデータの解釈に役立つ一連のオブジェクトが含まれています。

始める前に

  1. 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.
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  3. Google Cloud プロジェクトで課金が有効になっていることを確認します

  4. Google Cloud CLI をインストールします。
  5. gcloud CLI を初期化するには:

    gcloud init
  6. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  7. Google Cloud プロジェクトで課金が有効になっていることを確認します

  8. Google Cloud CLI をインストールします。
  9. gcloud CLI を初期化するには:

    gcloud init
  10. ユーザー アカウントに Cloud SQL 管理者のロールと Compute 閲覧者のロールがあることを確認します。

    IAM ページに移動

    ロールと権限について詳細を確認します

IAM データベース認証に新しいインスタンスを構成する

Cloud SQL では、フラグを使用してインスタンスでの IAM ユーザー接続を有効または無効にします。この手順では、このフラグを有効にします。

Cloud SQL IAM データベース認証を使用する新しいインスタンスを構成するには:

Console

  1. Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。

    Cloud SQL の [インスタンス] に移動

  2. [インスタンスを作成] をクリックします。
  3. [MySQL を選択] をクリックします。
  4. インスタンス ID の名前を入力します。インスタンス名には機密情報や個人を特定できる情報を含めないでください。インスタンス名は外部から閲覧可能です。インスタンス名にプロジェクト ID を含める必要はありません。プロジェクト ID は必要に応じて自動的に含まれます(ログファイルの場合など)。
  5. root ユーザーのパスワードを入力します。
  6. [データベースのバージョン] プルダウン メニューで、データベースのバージョンを選択します。
  7. [リージョンとゾーンの可用性の選択] セクションで、インスタンスのリージョンとゾーンを選択します。インスタンスにアクセスするリソースと同じリージョンにインスタンスを配置します。選択したリージョンは後から変更できません。通常、ゾーンを指定する必要はありません。
  8. [インスタンスのカスタマイズ] セクションで [構成オプションを表示] をクリックし、[フラグ] を開きます。
  9. [フラグを追加] をクリックします。
  10. [フラグを選択] プルダウン メニューから、cloudsql_iam_authentication フラグを選択します。このフラグの値として [オン] が選択されていることを確認し、[完了] をクリックします。
  11. 必要に応じて、他のインスタンス設定を構成します。設定の詳細については、設定をご覧ください。
  12. [インスタンスを作成] をクリックします。

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

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/sql/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/sql/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/sql/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}
基盤となる REST API リクエストがこのタスクでどのように作成されるかについては、instances:insert ページの API Explorer をご覧ください。

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"
}
基盤となる REST API リクエストがこのタスクでどのように作成されるかについては、instances:insert ページの API Explorer をご覧ください。

Cloud SQL IAM データベース認証に既存のインスタンスを構成する

既存のインスタンスで IAM データベース認証を構成するには:

Console

  1. Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。

    Cloud SQL の [インスタンス] に移動

  2. インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
  3. [編集] をクリックします。
  4. [インスタンスのカスタマイズ] セクションで、[フラグ] を開きます。
  5. [フラグを追加] をクリックします。
  6. [フラグを選択] プルダウン メニューから、cloudsql_iam_authentication フラグを選択します。このフラグの値として [オン] が選択されていることを確認し、[完了] をクリックします。
  7. 必要に応じて、他のインスタンス設定を構成します。設定の詳細については、設定をご覧ください。
  8. [保存] をクリックします。

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/sql/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/sql/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/sql/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"
}

次のステップ