IAM グループを通じた Cloud SQL 認証の導入: データベースに対する認証とアクセスを大幅に簡素化
Google Cloud Japan Team
※この投稿は米国時間 2023 年 12 月 9 日に、Google Cloud blog に投稿されたものの抄訳です。
データアクセスの管理と監査がきわめて複雑になることがあります。特に、膨大なユーザーを抱えるデータベース群で顕著です。現在、Google では Cloud SQL 向けに IAM グループ認証を導入しています。このリリースにより、使い慣れた IAM ベースの認証を通じて、優れたセキュリティの活用、ユーザー管理とデータベース認証の大幅な簡素化、データベース管理者とセキュリティ管理者によるデータベース アクセス管理の強化を図ることができます。
Cloud SQL の IAM グループ認証は、グループを使用した高度なデータベース認証です。Google Cloud のアカウント管理サービスによってグループを活用し、Cloud SQL のインスタンスに対する接続性とアクセスおよび権限の管理と制御ができます。IAM グループ認証は、グループレベルでデータベース アクセスを管理できるようにすることで、既存の IAM 認証の機能を拡張しています。現在のところ、IAM グループ認証は MySQL 8.0+ でのみ利用できます。
IAM グループ認証のサポートは、Cloud SQL の既存の IAM データベース認証機能と、ユーザー名とパスワードによるデータベース認証を基礎としています。IAM による認証は、強化されたセキュリティ、きめ細かい制御、集中管理などにより、ユーザー名とパスワードによる認証よりも包括姓と信頼性に優れたソリューションを提供します。ユーザー名とパスワードによる従来の認証から IAM に移行することで、大規模な業務停止を伴うことなくデータを保護できるようになります。また、すでに IAM データベース認証を使用しているのであれば、IAM グループ認証に移行することで、これまでと同様に使い慣れたユーザー エクスペリエンスが得られます。
このブログでは、価値の増進に IAM グループ認証が効果を発揮するシナリオをいくつか紹介し、この認証の設定と使用が容易な様子をご覧に入れます。
Cloud SQL の IAM グループ認証と既存の Cloud SQL の IAM との比較
この改良された新たな認証方法には多くの利点があります。そして、そうした利点により、データベース アクセスを管理する際の繰り返しタスクから、データベース管理者とセキュリティ管理者を解放できます。一群のテーブルに対するクエリを実行するためのアクセス権を必要とするユーザーが何人かいるとします。これらのテーブルでは、小売データベースに返品データが保存され、製品データベースにカタログデータが保存されています。ここでの目標は、このようなユーザー全員のアクセス権を四半期末に効率的な方法で付与し、また取り消すことです。Cloud SQL に従来からある IAM 認証のフローと新しい IAM グループ認証のフローで、この目標を達成する方法を検討します。
セキュリティ管理者のタスク: ユーザー グループ全体に対するログイン特権の付与と取り消し
- 現在の IAM 認証フロー: インスタンスにログインするうえで十分な IAM アクセス許可をセキュリティ管理者が個々のユーザーに付与します。これは手動プロセスであることから、管理者にとっては大きなトイルです。
注: 市販のソリューションの中には、セキュリティ管理者がグループを作成し、そのグループの権限をユーザーが借用できるようにするものもあります。しかし、この方法には、アカウントの共有と責任分担の不備によってセキュリティが損なわれる面があります。
- 新しい IAM グループ認証: セキュリティ管理者が、小売部署向けと製品部署向けに独立した IAM グループを作成し、その各グループに IAM ログイン特権を付与します。四半期末の時点で、小売データベースや製品データベースへのアクセス権を必要としなくなっているユーザーがいれば、そのユーザーを該当のグループから除外して Google グループを修正できます。そのユーザーは、それまで所属先グループで付与されていた IAM 特権とデータベース特権を失います。
おわかりのように、新しい IAM グループ認証を使用すれば、ユーザーのグループ全体に対するログイン特権をセキュリティ管理者がはるかに容易かつ一度に付与または取り消しを行うことができます。
データベース管理者のタスク: テーブルなどのデータベースへのアクセス権をグループに対して一度で付与または取り消し
- 現在の IAM 認証フロー: 上記のシナリオでは、データベース管理者は、ユーザーを一人ずつインスタンスに追加し、つづいてさまざまなデータベースに対するデータベース特権をそのユーザーに付与する必要があります。この場合も、この作業は手動によるその場限りのプロセスです。四半期末の時点でユーザーがタスクを終了している場合、そのアクセス権をデータベース管理者が取り消さないと、セキュリティ上のリスクとなる可能性があります。
- 新しい IAM グループ認証では、目的の社員が属する Google グループをデータベース管理者がインスタンスに追加して、そのグループにデータベース特権を付与するだけですみます。データベース管理者が特権を作成して、各ユーザーに付与する必要はありません。ユーザーとサービス アカウントが初めてログインすると、データベース管理者による作業を別途必要とせずに、Cloud SQL によってこれらのユーザーが自動的にインスタンスに追加されます。
コンプライアンスと監査タスク: 各ユーザーの詳細な監査ログ アクティビティを提示
たとえば、小売の IAM グループに属するユーザーは、それぞれ自身のアカウントでログインします。監査ロギングが有効になっていれば、IAM グループのユーザーとサービス アカウントがデータベースのデータにアクセスすると、そのアクティビティを記録した監査ログが必ず生成されます。
- 現在の IAM 認証: 小売テーブルで作業するユーザーは小売 IAM としてログインしますが、製品テーブルにアクセスするには、いったんログアウトしたうえで製品 IAM として再度ログインする必要があります。
- 新しい IAM グループ認証: 適切な IAM グループに属しているユーザーであれば、ログインしただけで目的のテーブルにアクセスできます。
要約すると、IAM グループ認証では、それぞれ異なるグループ特権を必要とするテーブルへのアクセスやタスクの遂行を 1 回のセッションでこなすことができるので、優れたユーザー エクスペリエンスが得られます。
IAM グループ認証のユースケース
- 別々の部署やユーザーロール向けのアクセス: Cloud SQL のインスタンスに対し、さまざまな部署にさまざまなアクセス要件があると考えられます。部署のロールと責任に応じて個別のグループを作成するには、IAM グループ認証が効果的です。たとえば、開発データベースにのみアクセスできるグループに開発部署を配置でき、本番環境のデータベースにアクセスできるグループに運用部署を配置できます。
- 重要なデータベース タスク向けのアクセス: データベースの破棄や作成などのデータベース運用作業を、承認された要員が属する特定のグループのみに制限できます。
- ユーザー アクティビティの監査やモニタリング向けのアクセス: 監査ログからは、ユーザー アクティビティとデータベース アクセスに関する詳細情報が得られます。この情報は、不正アクセスの識別やセキュリティ リスクの軽減に役立ちます。
IAM グループ認証を開始するための手順
ステップ 1: Cloud SQL のインスタンスを管理するプロジェクトに Cloud Identity グループを作成し、そこにグループ メンバーを追加します。
- Google と他の ID プロバイダとの間で ID を連携できるように Cloud Identity を構成します。このような ID プロバイダとしては、Active Directory や Azure Active Directory があります。
ステップ 2: Cloud Identity サービスを使用してユーザーを追加または削除します。ステップ 1 で示したリンク先をご覧ください。
ステップ 3: Cloud SQL のインスタンスへのログインに必要な IAM ロールを、目的のグループに付与します。このロールを付与するには、プロジェクトの IAM ページで Google Cloud コンソールを使用するか、以下のスクリプトを使用します。
注: メンバーにはアクセス許可が自動的に継承されるため、この処理が必要になるのはグループのみです。この操作は、Google Cloud コンソールまたは gcloud コマンドで実施できます。
グループへの roles/cloudsql.instanceUser ロールの付与
ステップ 4: MySQL のインスタンスを新規作成する場合は、そのインスタンスを作成してから IAM 認証データベースのフラグ(cloudsql_iam_authentication)を有効にします。既存のインスタンスを使用する場合は、ステップ 5 へ進んでください。この操作も Google Cloud コンソールで実施できます。
ステップ 5: MySQL のインスタンスにグループを追加します。既存の IAM ユーザーが IAM グループ認証へ移行できるようにするには、まず、その既存の IAM 認証ユーザーを削除する必要があります。IAM ユーザーを削除する方法については、こちらの手順をご覧ください。
ステップ 6: 新しいグループにデータベース特権を付与します。
すでに説明したように、データベース特権は、ユーザー単位ではなく、グループ単位で付与します。最初は、どのデータベースに対する特権もグループには付与されていません。したがって、GRANT ステートメントを使用してユーザーに特権を付与します。
ステップ 7: IAM 認証は、SSL 接続を介してのみ使用できます。SSL を使用してインスタンスに接続する方法を参照して、認証局(CA)、クライアントの公開鍵証明書、SSL を介した接続に必要なクライアントの秘密鍵を生成します。
ステップ 8: MySQL クライアントを介したログインの場合、ユーザーは gcloud auth login を使用して IAM に対する認証を受ける必要がありますが、サービス アカウントは auth activate-service-account に対する認証を受ける必要があります。IAM ユーザー アカウントの場合、これは、ユーザーのメールアドレスから @ とドメイン名を除去した文字列です。たとえば、test-user@gmail.com の場合は「test-user」と入力します。サービス アカウントの場合、これはサービス アカウントのメールアドレスから @project-id.iam.gserviceaccount.com を除去した文字列です。
最初のログインに成功すると、データベースにユーザーまたはサービス アカウントが自動的に作成されます。ユーザーとサービス アカウントは、その所属先グループに付与されているデータベース特権を継承します。
ユーザーは、Cloud SQL Auth Proxy を使用してログインすることもできます。
現在のインスタンス上の IAM グループ ユーザーをすべて一覧表示する場合は、次のコマンドを実行します。
IAM グループ認証を使用しているユーザーは、CLOUD_IAM_GROUP_USER タイプとして表示されます。
IAM グループ認証を使用しているサービス アカウントは、CLOUD_IAM_GROUP_SERVICE_ACCOUNT タイプとして表示されます。
このインスタンスに追加したグループは、CLOUD_IAM_GROUP タイプとして表示されます。
ユーザーのニーズは時間とともに変化します。Cloud Identity を使用すると、グループ メンバーに基づいて特権を更新できます。
最後に
ここで、Cloud SQL IAM グループ認証を重視すべき理由をまとめておきましょう。それは次のとおりシンプルなものです。
- これまで以上に優れたセキュリティ
- これまで以上に優れたユーザー管理
- 一時的なアクセス管理などの運用の簡潔化
- マルチテナント データベースや共有データベースの環境でさまざまなユーザー グループを対象としたデータ隔離とアクセス制御
- きめ細かいセキュリティ ポリシーの適用
- スケーラビリティ
- これまで以上に優れたデータベース ユーザー エクスペリエンス
この手順ガイドは、Cloud SQL の IAM グループ認証の使用、アクセス制御のエクスペリエンスとセキュリティの向上、運用上の負担の削減、ユーザーがタスクの遂行に必要とする適切なアクセス権の付与を確実に行うためのランブックとして活用してください。
Cloud SQL について詳しくは、こちらをクリックしてください。IAM 認証について詳しくは、こちらをクリックしてください。
ー データベース スペシャリスト、カスタマー エンジニア、Neha Bhatnagar


