Cloud SQL IAM データベースの認証の概要

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

はじめに

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

認証とは、ユーザーの身元を確認するアクセス制御のことです。エンドユーザーについては、ユーザーが認証情報(ユーザー名とパスワード)を入力すると認証が行われます。アプリケーションでは、ユーザーの認証情報がサービス アカウントに割り当てられている場合に認証が行われます。

組み込み認証と IAM 認証の違い

Cloud SQL では、データベース ユーザーに対して次の 2 種類の認証が使用されます。

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

IAM では、誰(ID)がどのリソースに対してどのようなアクセス権(ロール)を持つかを定義します。リソース(Cloud SQL インスタンス)へのアクセス権は、エンドユーザーに直接付与されません。複数の権限をロールにまとめて、認証されたメンバーに付与します。詳細については、IAM の概要をご覧ください。

IAM データベース認証では、次のものを使用して認証を行います。

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

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

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

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

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

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

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

IAM データベース認証を使用してインスタンスのデータベースに対するユーザー アカウントとサービス アカウントのアクセスを許可するには、次のことを行います。

  1. インスタンスに新しいユーザー アカウントまたはサービス アカウントを作成します。
  2. ユーザー アカウントまたはサービス アカウントに IAM ログイン権限を付与し、IAM データベース認証を許可します。

作成後、PostgreSQL の GRANT コマンドを使用して、他のデータベース権限を付与できます。

詳しくは、IAM データベース認証を使用するユーザー アカウントまたはサービス アカウントの作成をご覧ください。

ユーザー アカウントとサービス アカウントの Cloud SQL ログイン

ユーザーが Cloud SQL IAM データベース認証を使用してデータベースにログインする場合は、次のことを行う必要があります。

  1. IAM に対する認証を行います。
  2. gcloud auth print-access-token. を使用してアクセス トークンを生成します。
  3. データベースにログインする際に、アクセス トークンをパスワードとして指定します。

アクセス トークンはアカウントの IAM ユーザー認証情報で、有効期間は 1 時間です。このトークンはユーザーの身元を証明するものです。Cloud SQL は、ユーザーがログインする前に、トークンを使用してユーザーの認証と認可を行います。

詳しくは、IAM データベース認証を使用したデータベースへのログインをご覧ください。

Cloud Audit Logs を使った操作

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

制限事項

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

次のステップ