Data Management (DMS) の行レベルアクセス制御は、指定された制御フィールドの 1 つ以上の値に基づいて、特定のユーザーがクエリ可能なデータ行を制限します。これは、従業員が自身の職務責任に関連するデータのみを閲覧すべきという要件を満たすシナリオに有効です。たとえば、営業担当者が自社の担当リージョンまたは担当顧客アカウントに該当するレコードのみを表示できるように制御できます。
適用範囲/利用シーン
リージョン別データ分離:従業員が、割り当てられた担当エリアと一致するリージョンフィールドを持つ行のみをクエリできるように制限します。
複数テーブル制御:単一の対照群を使用して、データベース内の複数のテーブルに同一の制御値を適用します。
役割と責任
行レベルアクセス制御には、明確に分離された責任を持つ 2 つの役割が関与します:
| 役割 | 責任 |
|---|---|
| データベース管理者(DBA)、DMS 管理者、またはセキュリティ管理者 | 行レベルのアクセス制御の設定:コントロールグループの作成、行の構成の追加、およびコントロール値の設定 |
| すべてのユーザー(DBA や DMS 管理者を含む) | 制御対象データをクエリする前に、対象の行に対する権限申請を行う |
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
セキュリティコラボレーション モードで管理されているデータベースインスタンス。詳細については、「制御モード」をご参照ください。
データベース管理者(DBA)、DMS 管理者、またはセキュリティ管理者のロールを保持していること。ロールの確認方法については、「システムロールの表示」をご参照ください。
リレーショナルデータベース:ApsaraDB RDS for MySQL、ApsaraDB RDS for PostgreSQL、または PolarDB for MySQL
物理データベースのみがサポートされています。
制限事項
1 つのテーブルを対照群に追加できるのは 1 回のみです。
テーブルごとに指定できる制御フィールドは 1 つだけです。
対照群が削除されると、その対照群に関連付けられたすべての行レベル制御構成が無効になります。
行レベルアクセス制御の構成
以下の例では、poc_prod という名前の本番データベースを使用します。
ステップ 1:対照群の作成と行構成の追加
DMS コンソール V5.0 にログインします。
-
左上隅の
アイコンにポインターを合わせ、 を選択します。説明DMS コンソールを通常モードで使用している場合は、上部ナビゲーションバーから を選択します。
機密データ資産 に移動します:
アイコンモード:左上隅の
アイコンにポインターを合わせ、すべての機能 > セキュリティおよびディザスタリカバリ(DBS) > 機密データ > 機密データ資産 を選択します。通常モード:上部ナビゲーションバーから セキュリティおよびディザスタリカバリ(DBS) > 機密データ > 機密データ資産 を選択します。
右上隅の グローバル機密データ をクリックし、行制御 タブを開きます。
説明または、インスタンスリスト セクションの 有効化済み タブで 機密データリスト をクリックします。
行制御 タブで、対照群の作成 をクリックし、対照群の名前を入力します。
行構成の追加 をクリックし、以下の項目を設定します:
データベース のドロップダウンリストからデータベースを選択します。必要に応じてキーワードを入力して検索できます。
行レベルアクセス制御を適用するテーブルと制御フィールドを選択します。
追加 をクリックします。
ステップ 2:制御値の追加
対照群の右側にある 詳細 をクリックします。
行値の追加 をクリックし、以下のパラメーターを設定します:
パラメーター 説明 ? を付加 はい:新規値が既存の値に追加されます。いいえ:新規値が既存の値を置き換えます。 行値の内容 制御対象となる値を指定します。複数の値はカンマ(,)で区切ります。 インポート をクリックします。行値のインポートが成功すると、ページ上部に確認メッセージが表示されます。
行権限の申請
すべてのユーザー(DMS 管理者および DBA を含む)は、制御対象の行をクエリする前に、権限チケットを提出し、承認を受ける必要があります。
DMS コンソール V5.0 にログインします。
-
左上隅の
アイコンにポインターを合わせ、 を選択します。説明DMS コンソールを通常モードで使用している場合は、上部ナビゲーションバーから を選択します。
権限チケット に移動します:
アイコンモード:左上隅の
アイコンにポインターを合わせ、すべての機能 > セキュリティおよびディザスタリカバリ(DBS) > 権限センター > 権限チケット を選択します。通常モード:上部ナビゲーションバーから セキュリティおよびディザスタリカバリ(DBS) > 権限センター > 権限チケット を選択します。
アクセス申請チケット ページで、アクセス申請 > 行権限 を選択します。
対象の行を選択し、追加 をクリックします。選択した行は、選択済みデータベース/テーブル/カラム セクションに表示されます。
権限の選択 セクションで、クエリ を選択し、有効期間 および 申請理由 を指定します。
送信 をクリックし、承認を待ちます。承認後は、SQL コンソールで制御対象の行をクエリできます。チケットのステータスを確認するには、ワークベンチ タブの マイチケット セクションに移動します。
その他の操作
| 操作 | 手順 |
|---|---|
| 対照群の削除 | 行制御 タブで対照群を見つけ、削除します。この対照群に含まれるすべての行レベル制御構成が無効になります。 |
| 対照群の編集 | 行制御 タブで、対照群の名前または構成済みの制御フィールドを変更します。 |
よくある質問
SQL コンソールでのクエリが失敗します。行権限は承認済みですが、どうすればよいですか?
以下の手順でトラブルシューティングを行ってください。
ターゲットデータベースおよびテーブルに対するクエリ権限を有していることを確認してください。詳細については、「行権限の申請」をご参照ください。
SQL コンソールタブで、WHERE 条件付きの SQL ステートメントを使用して制御対象のデータ行をクエリします。
たとえば、制御フィールドが buyer_name であり、承認済みの値が name1、name2、name3 で、dms_test テーブルに対するクエリ権限を有している場合:
単一の値をクエリするには、
=またはINを使用します:SELECT * FROM dms_test WHERE buyer_name = 'name1';複数の値をクエリするには、
INを使用します:SELECT * FROM dms_test WHERE buyer_name IN ('name1', 'name2', 'name3');
次のステップ
行レベルアクセス制御の構成 — 詳細設定オプション