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

このページでは、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. 次のいずれかを行います。

接続を更新すると、Sensitive Data Protection は指定された認証情報を使用してインスタンスへの接続を試みます。接続エラーが発生した場合、Sensitive Data Protection はインスタンスへの接続を自動的に再試行します。詳細については、このページの接続エラーを表示するをご覧ください。

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

ユーザー名と、パスワードを含む 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. [完了] をクリックします。

接続エラーを表示する

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

    [サービス接続] に移動

    接続が一覧表示されます。接続にエラーがある場合は、エラー アイコンが表示されます。

  2. エラーのある接続で、[ アクション] > [エラーを表示] をクリックします。関連するエラー メッセージが表示されます。各メッセージには、接続をリクエストしたスキャン構成の名前が含まれます。

  3. 必要に応じてエラーを解決します。エラーに応じて、解決策には次のいずれかが必要になる場合があります。

    • 指定した認証情報を編集する
    • Secret Manager に保存されているパスワードの更新。
    • データベースにログインし、データベース ユーザーに必要な権限を付与します。
    • 指定されたスキャン構成に関連付けられたサービス エージェントに、指定された IAM ロールを割り当てる。

機密データの保護は、インスタンスへの接続を自動的に再試行します。再接続の試行が成功すると、エラー メッセージは消去されます。

パブリック IP アドレスのないインスタンスの検出を許可する

パブリック IP アドレスのない Cloud SQL インスタンスで検出を実行するには、そのインスタンスの [プライベート パスを有効にする] オプションを選択します。このオプションを使用すると、Google Cloud サービスはプライベート IP 接続を介して Cloud SQL インスタンス内のデータにアクセスできます。

詳しくは以下をご覧ください。

次のステップ