Data Management (DMS) の行レベルのアクセスの制御は、指定された制御フィールドの値に基づいて、ユーザーがテーブル内でクエリ、エクスポート、または変更できる行を制限します。たとえば、営業マネージャーは割り当てられたリージョンの行のみを参照でき、チェーン店従業員は自身の店舗のデータのみを参照できます。
この機能は、機密カラムをマスクまたは制限するフィールドレベルのアクセスの制御とは異なります。行レベルのアクセスの制御は、行全体に対して機能します。
サポートされているデータベース
行レベルのアクセスの制御は、DMS に接続されているリレーショナルデータベースで利用できます。これには、ApsaraDB RDS for MySQL および PolarDB が含まれます。以下のデータベースではサポートされていません。
NoSQL データベース
論理データベース (物理データベースのみ)
セキュリティコラボレーションモードで管理されていないデータベースインスタンス
前提条件
開始する前に、以下を確認してください。
データベースインスタンスが セキュリティコラボレーションモード で管理されていること。詳細については、「インスタンスのコントロールモードの表示」をご参照ください。
DMS ロールが DMS 管理者、データベース管理者 (DBA)、または セキュリティ管理者 であること。詳細については、「システムロールの表示」をご参照ください。
基本概念
行レベルのアクセスの制御を設定する前に、以下のオブジェクトを理解してください。
| オブジェクト | 説明 |
|---|---|
| 行レベル制御テーブル | 行レベルのアクセスの制御が設定されているテーブル。 |
| 制御フィールド | 行アクセスを決定する値を持つフィールド。 |
| 制御値 | 制御フィールドの特定の値。各制御値は1つ以上の行にマッピングされます。 |
| 行値 | 1つ以上の制御値の名前付きセット。ユーザーは行値に対する権限を申請します。 |
| 制御グループ | 同じ制御値を共有し、まとめて管理される制御テーブルのグループ。 |
仕組み
テーブルで行レベルのアクセスの制御がアクティブな場合、ユーザーは、承認されている制御値と制御フィールドの値が一致する行にのみアクセスできます。
次の例は、制御値がユーザーとアクセス可能な行にどのようにマッピングされるかを示しています。
| ユーザー | 承認された制御値 | アクセス可能な行 |
|---|---|---|
| Alice | Beijing, Shanghai | region = 'Beijing' または region = 'Shanghai' |
| Bob | Guangzhou | region = 'Guangzhou' |
| Carol | (すべての行) | テーブル内のすべての行 |
制御グループが設定されると、行レベルの権限を申請していないユーザーは、SQLConsole タブでそれらのテーブルのデータを表示できません。
制限事項
ユーザーが特定の行 (すべての行ではない) に対する権限を持っている場合、以下の SQL 制限が適用されます。
WHERE 句は、
=またはin演算子のみを使用して制御フィールドをフィルターする必要があります。論理演算子 (OR、XOR、NOT) は WHERE 句では許可されていません。
クエリ内の制御フィールド値は、ユーザーの承認された制御値リスト内にある必要があります。
制御グループの設定
制御グループは、1つ以上のテーブルを同じ制御値にリンクします。DMS 管理者、DBA、またはセキュリティ管理者のみが制御グループを作成できます。
DMS コンソール V5.0にログインします。
-
左上隅の
アイコンにポインターを合わせて、 を選択します。説明DMS コンソールを通常モードで使用する場合、上部ナビゲーションバーで を選択します。
-
ポインターを左上隅の
アイコンに移動し、 を選択します。説明DMS コンソールを通常モードで使用する場合、上部ナビゲーションバーで を選択します。
[機密データ資産] を開きます:
拡張モード: 左上隅の
アイコンにポインターを合わせ、[すべての機能] > [セキュリティと仕様] > [機密データ] > [機密データ資産] の順に選択します。通常モード: 上部ナビゲーションバーで、セキュリティと仕様 > 機微データ > 機微データ資産 を選択します。
右上隅の [グローバル機密データ] をクリックして、機密データリストページに移動します。
[行コントロール] タブをクリックし、次に [コントロールグループの作成] をクリックします。
[コントロールグループの作成] ダイアログボックスで、[コントロールグループ] フィールドに名前を入力します。
1つ以上の行レベル制御テーブルを追加します。
[行設定の追加] をクリックします。
「[データベース名の入力]」ドロップダウンリストから、データベースを選択します。検索するキーワードを入力します。
テーブルと制御フィールドを選択します。
同じ制御値を共有するテーブルをさらに追加するには、再度 [行設定の追加] をクリックして、手順を繰り返します。
[追加] をクリックして対照群を保存します。
テーブルが制御グループに追加されると、行レベルの権限を持たないユーザーは、権限が承認されるまで SQLConsole タブでそのテーブルのデータを表示できません。
制御グループへの行値の追加
行値は、1つ以上の制御値を名前付きセットの下にグループ化します。ユーザーは行値に対する権限を申請し、これによりその制御値に一致するすべての行へのアクセスが許可されます。
「[行制御]」タブで、コントロールグループを見つけ、「[詳細]」を「[操作]」列でクリックします。
「コントロール値の詳細」パネルで、[行値の追加] をクリックします。
[行値のインポート] ダイアログボックスで、追加または上書きするかどうかを指定します:
はい: 新しいコントロール値を既存の行値に追加します。
[いいえ]:既存のコントロール値を新しい値で置き換えます。
1 つ以上のコントロール値を [行値コンテンツ] フィールドに入力します。複数の値はカンマで区切ります。例:
Beijing,Shanghaiを入力して、両都市をカバーする行値を作成します。この行値を申請したユーザーは、リージョンがBeijingまたはShanghaiに等しいすべての行にアクセスできます。
行レベルの権限の申請
任意の DMS ユーザーは、権限チケットを通じて行レベルの権限を申請できます。アクセスが許可される前に、管理者が申請を承認する必要があります。
DMS コンソール V5.0 にログインします。DMS コンソール V5.0。
[権限チケット] を開きます:
拡張モード:左上隅の
アイコンにポインターを移動して、[すべての機能] > [セキュリティと仕様] > [権限センター] > [権限チケット] を選択します。通常モード: トップナビゲーションバーで、[セキュリティと仕様] > [権限センター] > [権限チケット] を選択します。
右上隅で、[アクセス申請] > [行レベル権限] を選択します。
データベース名を入力します。あいまい検索には
%をワイルドカードとして使用します。権限スコープを選択します。
単一: 特定の行の値へのアクセスを付与します。行の値には複数のコントロール値が含まれる場合があるため、このオプションでは複数の行へのアクセスを付与できます。コントロール値はテーブル内の複数の行をマップする場合があります。[行の値] 列のハイフン (
-) は、すべての行に対する権限を示します。すべて: 行レベル制御テーブル内のすべての行へのアクセスを許可します。
[検索] をクリックし、目的の行レベルの権限を選択して
をクリックします。権限タイプと有効期間を選択し、[理由] フィールドに申請理由を入力します。
[送信] をクリックします。
申請が承認されると、承認された行のデータをクエリ、エクスポート、変更できます。 ![]()
行レベルの権限の解放
一般ユーザー: [権限]ページに移動して、自身の権限を表示および解放します。詳細については、「所有する権限の表示」をご参照ください。
管理者: 上部のナビゲーションバーで [O &M] をクリックし、左側のナビゲーションウィンドウで [ユーザー] をクリックします。対象のユーザーを見つけ、[アクション] 列で [その他] > [権限詳細] を選択して、その権限を表示および取り消します。
次のステップ
行に加えて機密カラムを保護するには、「機密データの管理」をご参照ください。