検出で使用する接続を管理する

このページでは、Cloud SQL の検出を構成するときに Sensitive Data Protection が作成する接続の操作方法について説明します。

サービス エージェント ID を取得する

このページの手順を実行するには、スキャン構成に関連付けられているサービス エージェントの ID が必要です。サービス エージェント ID を取得する手順は次のとおりです。

  1. 検出スキャン構成のリストに移動します。

    検出スキャンの構成に移動

  2. スキャン構成を選択します。
  3. 開いた詳細ページで、サービス エージェント ID をコピーします。この ID はメールアドレスの形式の中にあります。

サービス エージェントに必要な IAM ロールを付与する

  1. スキャン構成に関連付けられたサービス エージェントに、必要なドライバ ロールがあることを確認します。

    • 検出オペレーションのスコープが組織全体またはフォルダである場合は、サービス エージェントに DLP 組織データ プロファイル ドライバ(roles/dlp.orgdriver)のロールがあることを確認してください。
    • 検出オペレーションのスコープが単一プロジェクトである場合は、サービス エージェントに DLP プロジェクト データ プロファイル ドライバ(roles/dlp.projectdriver)のロールがあることを確認してください。
  2. サービス エージェントに Secret Manager のシークレット アクセサー(roles/secretmanager.secretAccessor)のロールを付与します。

サービス エージェント ID を取得するには、このページのサービス エージェント ID を取得するをご覧ください。

詳細については、Identity and Access Management のドキュメントのサービス エージェントにロールを付与するをご覧ください。

各 Cloud SQL インスタンスのユーザーを作成する

検出の対象となるインスタンスごとに、データのプロファイリングに必要な権限を持つユーザー アカウントを作成します。

既存のユーザー アカウントを使用することもできますが、そのアカウントにこのセクションに記載されている権限があることを確認する必要があります。

Cloud SQL for MySQL インスタンスのユーザーを作成する

このセクションでは、データ プロファイリングで使用する MySQL ユーザー アカウントを作成する方法について説明します。ユーザー アカウントを作成するか、既存のアカウントを再利用するかにかかわらず、アカウントには mysql_native_password 認証プラグインが必要です。このセクションでは、この認証プラグインを使用するために既存のデータベース ユーザー アカウントを変更する方法について説明します。

  1. インスタンスに接続します。
  2. データベース ユーザー アカウントを準備します。

    • データベース ユーザーを作成する場合は、mysql プロンプトで次のコマンドを実行します。

      CREATE USER 'USERNAME'@'%' IDENTIFIED WITH mysql_native_password BY 'PASSWORD';
      

      次のように置き換えます。

      • USERNAME: ユーザー アカウントのユーザー名
      • PASSWORD: ユーザー アカウントのパスワード

      詳細については、MySQL ドキュメントで CREATE USER ステートメント をご覧ください。

    • mysql_native_password 認証プラグインを使用していない既存のデータベース ユーザー アカウントを使用する場合は、ALTER USER コマンドを使用してアカウントの認証プラグインを変更します。

      ALTER USER 'USERNAME'@'%' IDENTIFIED WITH mysql_native_password BY 'PASSWORD';
      

      詳細については、MySQL ドキュメントで ALTER USER ステートメントをご覧ください。

  3. ユーザーに SELECT 権限と SHOW VIEW 権限を付与します。

    GRANT SELECT, SHOW VIEW ON *.* TO 'USERNAME'@'%';
    

    出力は次のようになります。

    Query OK, 0 rows affected (0.00 sec)

    詳細については、MySQL ドキュメントで GRANT ステートメントをご覧ください。

  4. (省略可)performance_schema.log_status をプロファイリングする場合は、BACKUP_ADMIN 権限をユーザーに付与します。詳細については、MySQL ドキュメントの MySQL パフォーマンス スキーマをご覧ください。

    GRANT BACKUP_ADMIN ON *.* TO 'USERNAME'@'%';
    
  5. Secret Manager で、パスワードを保存する シークレットを作成します。Cloud SQL インスタンスを含むプロジェクトにシークレットを作成します。

    Secret のリソース名をメモします。

Cloud SQL for PostgreSQL インスタンスのユーザーを作成する

Cloud SQL for PostgreSQL インスタンスの場合、Sensitive Data Protection は次の 2 種類のユーザー アカウントをサポートします。

  • PostgreSQL を使用して作成された組み込みユーザー アカウント。
  • IAM プリンシパル(特にスキャン構成に関連付けられたサービス エージェント)。

オプション 1: PostgreSQL で組み込みユーザー アカウントを作成する

このセクションでは、PostgreSQL を介して組み込みユーザー アカウントを作成する方法について説明します。

  1. インスタンスに接続します。
  2. postgres プロンプトで、次のコマンドを実行してユーザーを作成します。

    CREATE USER USERNAME WITH PASSWORD 'PASSWORD';
    

    次のように置き換えます。

    • USERNAME: ユーザー アカウントのユーザー名
    • PASSWORD: ユーザー アカウントのパスワード

    出力は次のようになります。

    CREATE ROLE

    詳細については、PostgreSQL ドキュメントの CREATE USER をご覧ください。

  3. ユーザーに pg_read_all_data ロールを付与します。

    GRANT pg_read_all_data TO USERNAME;
    

    出力は次のようになります。

    GRANT ROLE

    詳細については、PostgreSQL ドキュメントの GRANT をご覧ください。

  4. Secret Manager で、パスワードを保存する シークレットを作成します。

    • 検出オペレーションのスコープが組織全体またはフォルダである場合は、Cloud SQL インスタンスを含むプロジェクト内にシークレットを作成します。
    • 検出オペレーションのスコープが単一プロジェクトである場合は、そのプロジェクト内にシークレットを作成します。

    Secret のリソース名をメモします。

オプション 2: サービス エージェントをインスタンス内のユーザーとして追加する(PostgreSQL のみ)

この手順は、Cloud SQL for PostgreSQL インスタンスを構成する場合にのみ行ってください。

  1. Cloud SQL for PostgreSQL のドキュメントのデータベースに IAM サービス アカウントを追加する手順に従います。

    指定するサービス アカウントは、スキャン構成に関連付けられているサービス エージェントである必要があります。サービス エージェント ID を取得するには、このページのサービス エージェント ID を取得するをご覧ください。

  2. PostgreSQL で、サービス エージェントに pg_read_all_data ロールを付与します。

    GRANT pg_read_all_data TO "TRUNCATED_SERVICE_AGENT_ID";
    

    TRUNCATED_SERVICE_AGENT_ID は、.gserviceaccount.com サフィックスのないサービス エージェント ID に置き換えます(例: service-1234567890@dlp-api.iam)。

    出力は次のようになります。

    GRANT ROLE

Cloud SQL インスタンスへのアクセス権を付与する

スキャン構成を作成すると、Sensitive Data Protection が検出の範囲のインスタンスごとに、デフォルトのサービス接続が自動的に作成されます。プロファイリングを開始する前に、各サービス接続を編集して各 Cloud SQL インスタンスの認証情報を指定する必要があります。

接続を更新する方法は次のとおりです。

  1. Google Cloud コンソールで、[サービス接続] のページに移動します。

    [サービス接続] に移動

    接続がリストに表示されます。

  2. 更新する接続で、[ アクション] > [認証情報を管理] をクリックします。

  3. 表示されたペインで、次のいずれかを行います。

ユーザー アカウントの認証情報を指定する

ユーザー名と、パスワードを含む Secret Manager リソースを入力します。Secret Manager のリソースは次の形式にする必要があります。

projects/PROJECT_NUMBER/secrets/SECRET_NAME/versions/VERSION_NUMBER

次のように置き換えます。

  • PROJECT_NUMBER: プロジェクトの数値 ID。
  • SECRET_NAME: パスワードを含む Secret の名前。
  • VERSION_NUMBER: Secret のバージョン番号。最新バージョンを指定するには、latest を使用します。

サービス エージェントをユーザー アカウントとして使用する

このオプションは、Cloud SQL for PostgreSQL インスタンスでのみ使用できます。

サービス エージェントをユーザー アカウントとして使用するには、[Cloud SQL IAM データベース認証] を選択します。

インスタンスへの同時接続の最大数を更新する

デフォルトでは、Sensitive Data Protection は最大 2 つの同時接続を使用して、Cloud SQL インスタンスに対する検出の影響を最小限に抑えます。この数は、インスタンスのサイズと使用率に基づいて適切な値に増やすことをおすすめします。

詳細については、Cloud SQL ドキュメントの最大同時接続数をご覧ください。

検出サービスの最大接続数を変更する手順は次のとおりです。

  1. Google Cloud コンソールで、[サービス接続] のページに移動します。

    [サービス接続] に移動

    接続がリストに表示されます。

  2. 更新する接続で、[ アクション] > [接続上限を管理] をクリックします。

  3. 表示されたペインに新しい上限を入力します。

  4. [完了] をクリックします。

次のステップ