すべてのプロダクト
Search
ドキュメントセンター

Data Management:行レベルのアクセス制御

最終更新日:Aug 13, 2024

このトピックでは、行レベルのアクセス制御を実装し、行権限を適用する方法について説明します。

シナリオ

Data Management (DMS) の行レベルのアクセス制御機能を使用すると、制御フィールドの1つまたは複数の値を使用して、特定の従業員が使用できるデータ行を制御できます。

  • たとえば、従業員が担当するリージョンのデータのみを表示する場合は、DMSの行レベルのアクセス制御機能を使用できます。

  • データベースに複数のテーブルがあり、それぞれが同じコントロール値を使用して行レベルのアクセス制御を必要とする場合、コントロールグループを使用して複数のテーブルに行レベルのアクセス制御を実装できます。

前提条件

  • データベースインスタンスは、Security Collaborationモードで管理されます。 詳細については、「コントロールモード」をご参照ください。

  • データベース管理者 (DBA) 、DMS管理者、またはセキュリティ管理者です。 詳細については、「システムロールの表示」をご参照ください。

  • データベースは、ApsaraDB RDS for MySQLApsaraDB RDS for PostgreSQLPolarDB for MySQLデータベースなどのリレーショナルデータベースです。

    説明

    物理データベースのみがサポートされています。

手順

次の例では、poc_prodという名前の本番データベースが使用されています。

手順1: 行レベルのアクセス制御の追加

  1. DMSコンソールV5.0 にログインします。

  2. 上部のナビゲーションバーで、セキュリティと仕様 > 機密データ > 機密データ資産 を選択します。

    説明

    DMSコンソールをシンプルモードで使用する場合は、左上隅の2023-01-28_15-57-17.pngアイコンの上にポインターを移動し、[すべての機能] > [セキュリティと仕様] > [機密データ] > [機密データ資産] を選択します。

  3. ページの右上隅にある [グローバル機密データ] をクリックし、行管理タブに移動します。

    説明

    [インスタンスリスト] セクションの [有効] タブの [機密データリスト] をクリックして、行制御ページに移動することもできます。

  4. コントロールグループを作成します。

    [行制御] タブで、[コントロールグループの作成] をクリックし、コントロールグループ名を入力します。

  5. 行設定を追加します。

    1. [行設定の追加] をクリックします。

    2. 行レベルのアクセス制御を実行するデータベース。 [データベース] ドロップダウンリストからデータベースを選択します。 キーワードを入力してデータベースを検索することもできます。

    3. 行レベルのアクセス制御を設定するテーブルと制御フィールドを選択します。

      説明

      テーブルは、制御グループに1回だけ指定できます。 テーブルに指定できるコントロールフィールドは1つだけです。

    4. [追加] をクリックします。

  6. コントロール値を追加します。

    1. コントロールグループの右側にある [詳細] をクリックします。

    2. 表示されるページで、[行値の追加] をクリックし、次のパラメーターを設定します。

      パラメーター

      説明

      追加?

      有効な値:

      • はい: 新しい値が既存の値に追加されます。

      • いいえ: 既存の値は新しい値に置き換えられます。

      行値のコンテンツ

      管理する値。The values to be managed. 一度に複数の値を追加できます。 複数入力する場合は、カンマ (,) で区切ります。

    3. [インポート] をクリックします。

      行の値をインポートすると、ページの上部にメッセージが表示されます。

ステップ2: 行権限の申請

DMS管理者とDBAを含むすべてのユーザーは、行のデータを照会する前に、特定の行に対する権限を申請する必要があります。

  1. DMSコンソールV5.0 にログインします。

  2. 上部のナビゲーションバーで、セキュリティと仕様 > 権限センター > 許可チケットを選択します。

    説明

    DMSコンソールをシンプルモードで使用する場合は、左上隅の2023-01-28_15-57-17.pngアイコンの上にポインターを移動し、[すべての機能] > [セキュリティと仕様] > [権限センター] > [権限チケット] を選択します。

  3. [Access applyTickets] ページで、ページの右上隅にある [Access apply] > [Row Permission] を選択します。

  4. 対象の行を選択し、追加をクリックします。行が選択したデータベース /テーブル /列セクションに表示されます。

  5. 権限の選択セクションで、クエリを指定し、期間理由 を指定します。

  6. パラメーターを設定したら、[送信] をクリックします。 承認を待ってから、[SQLコンソール] タブで制御されたデータを照会できます。

    説明

    チケットが送信されたら、承認を待ちます。 チケットのステータスは、[ワークベンチ] タブの [マイチケット] セクションで確認できます。

もっと

  • 行レベルのコントロールグループの削除: 行レベルのコントロールタブで、コントロールグループを削除できます。 制御グループが削除されると、行レベルの制御設定は無効になります。

  • 行レベルのコントロールグループの編集: 行レベルのコントロールタブで、コントロールグループ名や設定されたコントロールフィールドなどの設定を変更できます。

よくある質問

Q: コントロール行のクエリ権限が付与されているにもかかわらず、[SQLコンソール] タブでクエリの実行が失敗するのはなぜですか。

A: 次の手順を実行してトラブルシューティングします。

  1. ターゲットデータベースとテーブルに対するクエリ権限があることを確認してください。 特定の手順の詳細については、「手順2: 行権限の申請」をご参照ください。

  2. [SQLコンソール] タブでWHERE条件を持つSQL文を使用して、制御されたデータ行を照会します。

    たとえば、制御対象フィールドが "buyer_name" で、制御対象行の値が "name1" 、"name2" 、"name3" で、データベースとdms_testテーブルのクエリ権限がある場合、[SQLコンソール] タブで次のステートメントを実行して、制御対象データ行をクエリできます。

    • 単一の制御値を含むデータ行を照会するには、SQL文のWHERE句で=INを使用します。 サンプルSQL文:

      にログインします。
    • 複数の制御された値を含むデータ行をクエリするには、WHERE句でINを使用します。 サンプルSQL文:

      SELECT * FROM dms_test WHERE buyer_name IN ('name1', 'name2','name3');