このページでは、ユーザーとサービス アカウントが Cloud SQL IAM データベース認証を使用して Cloud SQL データベースにログインする方法について説明します。詳細については、IAM 認証をご覧ください。
始める前に
- IAM データベース認証を使用するようにインスタンスを構成します。詳しくは、IAM データベース認証に新しいインスタンスを構成するをご覧ください。
- IAM ユーザー、サービス アカウント、またはグループをデータベースに追加します。詳細については、IAM ユーザーまたはサービス アカウントをデータベースに追加するとグループをデータベースに追加するをご覧ください。
- IAM ユーザー、サービス アカウント、またはグループに
roles/cloudsql.instanceUser
IAM ロールを追加します。これは必要な Cloud SQL IAM 権限cloudsql.instances.login
を含む事前定義ロールです。IAM データベース認証を使用してデータベース インスタンスにログインするには、この権限が必要です。詳細については、ロールと権限をご覧ください。 IAM ユーザーがデータベースに追加されると、デフォルトでは、新しいデータベース ユーザーにはデータベースに対する権限が付与されません。
GRANT
コマンドを使用して、IAM データベース ユーザーに必要な権限を付与する必要があります。詳細については、IAM ユーザーにデータベース権限を付与するとグループにデータベース権限を付与するをご覧ください。IAM グループ認証を使用している場合、IAM ユーザーまたはサービス アカウントは、Cloud SQL インスタンスにログインするための IAM ロールまたは権限が付与されたグループのメンバーである必要があります。ユーザーまたはサービス アカウントがインスタンスに初めてログインした後に、Cloud SQL によってアカウントが作成されます。
IAM データベースの自動認証を使用してログインする
ユーザーまたはアプリケーションに代わって Cloud SQL インスタンスに対する認証を自動的に処理するように Cloud SQL コネクタを構成できます。コネクタには Cloud SQL Auth Proxy、Go コネクタ、Java コネクタ、Python コネクタがあり、どのコネクタも自動 IAM データベース認証をサポートしています。自動 IAM データベース認証で Cloud SQL コネクタを使用する場合、コネクタの起動に使用する IAM アカウントは、データベース認証と同じアカウントにする必要があります。
IAM データベースの自動認証でログインするには:
Cloud SQL Auth Proxy
Google Cloud に対して認証を行います。
ユーザー
アプリケーションのデフォルト認証情報(ADC)を使用して Google Cloud に対する認証を行います。
gcloud auth application-default login
コマンドを使用します。詳細については、アプリケーションのデフォルト認証情報を設定するをご覧ください。サービス アカウント
サービス アカウントで ADC を使用して Google Cloud に対する認証を行うには、サービス アカウントの権限借用を使用するか、サービス アカウント キーを使用します。サービス アカウントの権限借用を使用するには、SERVICE_ACCOUNT_EMAIL_ADDRESS を置き換えて次のコマンドを実行します。
gcloud auth application-default login --impersonate-service-account SERVICE_ACCOUNT_EMAIL_ADDRESS
詳細については、アプリケーションのデフォルト認証情報を設定するをご覧ください。
--auto-iam-authn
フラグを指定して Cloud SQL Auth Proxy を起動します。以下を置き換えます。
- INSTANCE_CONNECTION_NAME: Cloud SQL インスタンスを識別するための接続文字列。デフォルトの PostgreSQL ポート以外のポートを使用する場合は、ポート番号を指定します。この文字列を見つける方法および作成する方法の詳細については、Cloud SQL Auth Proxy の認証オプションをご覧ください。
./cloud-sql-proxy --auto-iam-authn INSTANCE_CONNECTION_NAME
プロキシを開始する方法の詳細については、Cloud SQL Auth Proxy の起動をご覧ください。
Cloud SQL Auth Proxy を使用してインスタンスに接続する準備ができたら、
psql
クライアントでログインします。次のように置き換えます。
- HOSTNAME: Cloud SQL Auth Proxy で使用される IP アドレス。デフォルトでは、Cloud SQL Auth Proxy は localhost アドレス
127.0.0.1
を使用しますが、Cloud SQL Auth Proxy の起動時に別の IP アドレスを割り振ることができます。 - USERNAME: IAM の場合、ユーザー名はユーザーの完全なメールアドレスです。サービス アカウントの場合、
.gserviceaccount.com
ドメイン サフィックスのないサービス アカウントのメールアドレスです。 - PORT_NUMBER: 省略可。インスタンスの接続文字列に別のポートを指定した場合は、そのポート番号を指定します。
- DATABASE_NAME: 接続先のデータベースの名前。
次のコマンドを実行します。
psql -h HOSTNAME \ -U USERNAME \ --port PORT_NUMBER \ --dbname=DATABASE_NAME
Cloud SQL Auth Proxy に接続する方法の詳細については、psql クライアントと接続するをご覧ください。
- HOSTNAME: Cloud SQL Auth Proxy で使用される IP アドレス。デフォルトでは、Cloud SQL Auth Proxy は localhost アドレス
Go
Java JDBC
Java R2DBC
Python
手動 IAM データベース認証を使用してログインする
ユーザーまたはアプリケーションは、Google Cloud から手動でアクセス トークンをリクエストしてデータベースに提示することで、IAM を使用してデータベースを認証できます。gcloud CLI を使用すると、データベースにログインするための Cloud SQL Admin API スコープで OAuth 2.0 トークンを明示的にリクエストできます。手動 IAM データベース認証でデータベース ユーザーとしてログインする場合は、メールアドレスをユーザー名として使用し、アクセス トークンをパスワードとして使用します。この方法は、データベースへの直接接続または Cloud SQL コネクタで使用できます。
この手順では、Google Cloud に対して認証を行い、アクセス トークンをリクエストします。このトークンを IAM データベース ユーザーのパスワードとして渡してデータベースに接続します。Cloud SQL Auth Proxy を使用せずに接続する手順は次のとおりです。
以下のことを行う必要があります。
gcloud sql generate-login-token
コマンドを使用して認証トークンを生成する。手動 IAM データベース認証でログインするには:
gcloud
Google Cloud に対して認証を行います。
ユーザー
IAM 認証に
gcloud auth login
を使用します。詳細については、ユーザー アカウントを使用して承認するをご覧ください。サービス アカウント
IAM 認証に
gcloud auth activate-service-account
を使用します。詳細については、サービス アカウントを使用して承認するをご覧ください。アクセス トークンをリクエストして、クライアントでログインします。
次のように置き換えます。
- HOSTNAME: インスタンスの IP アドレス(パブリック IP アドレスまたはプライベート IP アドレス)。
- USERNAME: IAM の場合、ユーザー名はユーザーの完全なメールアドレスです。サービス アカウントの場合、
.gserviceaccount.com
ドメイン サフィックスのないサービス アカウントのメールアドレスです。 - DATABASE_NAME: 接続先のデータベースの名前。
PGPASSWORD=`gcloud sql generate-login-token` \ psql "sslmode=require \ hostaddr=HOSTNAME \ user=USERNAME \ dbname=DATABASE_NAME" \ --no-password
Cloud SQL インスタンスの
ssl_mode
がTRUSTED_CLIENT_CERTIFICATE_REQUIRED
に構成されている場合は、自動 IAM データベース認証でログインして、クライアント ID の検証を適用することをおすすめします。
次のステップ
- IAM データベース認証について学習する。
- 監査ログを有効にしてログイン情報を確認する方法を学習する。
- Cloud SQL IAM データベース認証を使用するユーザーとサービス アカウントを作成する方法を学習する。
- IAM データベース認証のユーザー アカウントとサービスを管理する方法を学習する。