Cloud SQL IAM データベース認証

このページでは、IAM データベース認証が Cloud SQL インスタンスでどのように機能するか、またユーザー アカウントとサービス アカウントの作成やこれらのアカウントからのログインにどのように影響するかについて説明します。

はじめに

Cloud SQL は Identity and Access Management(IAM)と統合されており、データベースに対するユーザーとサービス アカウントのログイン アクセスを適切に管理できます。この機能を IAM データベース認証と呼びます。

認証とは、インスタンスにアクセスを試みるユーザーの身元を確認するプロセスです。Cloud SQL は、データベース ユーザーに対して次の種類の認証が使用されます。

  • データベースの組み込み認証。ユーザー名とパスワードを使用してデータベース ユーザーを認証します。
  • IAM データベース認証。アクセス トークンと IAM を使用してユーザーの認証を行います。

Cloud SQL 用 IAM 認証

IAM 認証を使用する場合、リソース(Cloud SQL インスタンス)へのアクセス権はエンドユーザーに直接付与されません。複数の権限をロールにまとめて、メンバーまたはグループに付与します。詳細については、IAM の概要をご覧ください。

IAM データベース認証を使用してログインする管理者は、IAM ポリシーを使用してインスタンスへのアクセス制御を一元管理できます。IAM ポリシーには、次のエンティティが含まれます。

  • メンバー。Cloud SQL では、ユーザー アカウントとサービス アカウント(アプリケーション用)という 2 種類のメンバーを使用できます。その他のメンバータイプ(Google グループ、G Suite ドメイン、Cloud Identity ドメインなど)は、IAM データベース認証ではサポートされていません。詳細については、ID に関するコンセプトをご覧ください。
  • ロール。IAM データベース認証では、ユーザーがインスタンスにログインするために cloudsql.instances.login 権限が必要です。この権限を取得するには、事前定義ロールの Cloud SQL インスタンス ユーザーか、権限を含むカスタムロールのいずれかにユーザー アカウントまたはサービス アカウントをバインドします。IAM ロールの詳細については、ロールについてをご覧ください。
  • リソース。メンバーがアクセスするリソースは Cloud SQL インスタンスです。デフォルトでは、IAM ポリシー バインディングはプロジェクト レベルで適用されるため、メンバーはプロジェクト内のすべての Cloud SQL インスタンスのロール権限を受け取ります。

IAM データベース認証のオプション

Cloud SQL for MySQL では、手動の IAM データベース認証がサポートされています。

IAM データベースの手動認証

IAM データベースの手動認証では、IAM メンバーは、クライアント接続リクエストでパスワード属性のアクセス トークンを明示的に渡す必要があります。メンバーはまず Google Cloud にログインし、IAM からアクセス トークンを明示的にリクエストする必要があります。

Cloud SDK を使用すると、データベースにログインするために使用される Cloud SQL API スコープで OAuth 2.0 トークンを明示的にリクエストできます。IAM データベース認証でデータベース ユーザーとしてログインする場合は、メールアドレスをユーザー名として使用し、アクセス トークンをパスワードとして使用します。この方法は、データベースへの直接接続または Cloud SQL コネクタで使用できます。

IAM データベース認証を使用したログインは、SSL 接続経由でのみ実行できます。

詳しくは、IAM データベースの手動認証によるログインをご覧ください。

ユーザーとサービス アカウントの管理

IAM データベース認証を使用してインスタンスのデータベースに対するユーザー アカウントとサービス アカウントのアクセスを許可するには、そのユーザーをインスタンスに追加する必要があります。詳しくは、IAM を使用するユーザーまたはサービス アカウントの追加をご覧ください。

Google Cloud Console を使用してユーザーまたはサービス アカウントを追加する場合、Cloud SQL から「Cloud SQL ユーザー」ロールを追加するよう求められます。このロールは、ユーザーがインスタンスにログインするために必要です。

データベースに IAM ユーザーを追加したら、データベース権限を手動で付与する必要があります。MySQL GRANT コマンドを使用して他のデータベース権限を付与します。

Cloud SQL IAM データベース認証のインスタンス構成

インスタンスで IAM データベース認証を有効にするには、cloudsql_iam_authentication フラグを使用します。このフラグを有効にすると、インスタンスで IAM データベース認証用に構成されたアカウントのログインが有効になります。

このフラグを設定した場合でも、IAM を使用しない既存のユーザーは、ユーザー名とパスワードを使用してログインできます。ただし、このフラグをインスタンスで無効にすると、以前に IAM データベース認証を使用して追加したユーザーはインスタンスにアクセスできなくなります。詳しくは、IAM データベース認証のインスタンスの構成をご覧ください。

さまざまなインスタンス シナリオに対する Cloud SQL IAM データベース認証

リードレプリカ プライマリ インスタンスで IAM データベース認証が有効になっている場合でも、リードレプリカでは自動的に有効になりません。作成したリードレプリカに IAM データベース認証を追加する必要があります。詳細については、IAM データベース認証のリードレプリカ ログインの構成をご覧ください。
復元されたインスタンス 以前にバックアップされたインスタンスを同じプロジェクト内の同じインスタンスまたは別のインスタンスに復元した場合、現在のユーザー ログイン認証が適用されます。別のプロジェクトの新しいインスタンスにバックアップを復元する場合は、新しいインスタンスのユーザー認証を設定する必要があります。詳細については、IAM データベース認証を使用するユーザーまたはサービス アカウントの追加をご覧ください。

Cloud Audit Logs を使った操作

監査ログを使用すると、ログインなどのデータアクセスの記録を保持できます。デフォルトでは、Cloud Audit Logs は無効になっています。ログインをトラッキングするには、データアクセスの監査ログを有効にする必要があります。この目的で監査ロギングを使用すると、データロギングの費用が発生します。詳細については、監査ログデータアクセス監査ログの構成データロギングの料金をご覧ください。

制限事項

  1. セキュリティ上、IAM データベース認証を使用したログインは SSL 接続でのみ使用できます。暗号化されていない接続は拒否されます。
  2. 各インスタンスには分単位のログイン割り当てがあります。これには、成功したログインと失敗したログインの両方が含まれます。割り当てを超過すると、一時的にログインできなくなります。頻繁にログインするのではなく、承認済みネットワークを使用してログインを制限することをおすすめします。 ログインの承認の割り当ては、インスタンスごとに 1 分あたり 3,000 です。
  3. MySQL 5.6 を使用するインスタンスでは、IAM データベース認証はサポートされていません。

次のステップ