このトピックでは、行レベルのアクセス制御を実装し、行権限を適用する方法について説明します。
シナリオ
Data Management (DMS) の行レベルのアクセス制御機能を使用すると、制御フィールドの1つまたは複数の値を使用して、特定の従業員が使用できるデータ行を制御できます。
たとえば、従業員が担当するリージョンのデータのみを表示する場合は、DMSの行レベルのアクセス制御機能を使用できます。
データベースに複数のテーブルがあり、それぞれが同じコントロール値を使用して行レベルのアクセス制御を必要とする場合、コントロールグループを使用して複数のテーブルに行レベルのアクセス制御を実装できます。
前提条件
データベースインスタンスは、Security Collaborationモードで管理されます。 詳細については、「コントロールモード」をご参照ください。
データベース管理者 (DBA) 、DMS管理者、またはセキュリティ管理者です。 詳細については、「システムロールの表示」をご参照ください。
データベースは、ApsaraDB RDS for MySQL、ApsaraDB RDS for PostgreSQL、PolarDB for MySQLデータベースなどのリレーショナルデータベースです。
説明物理データベースのみがサポートされています。
手順
次の例では、poc_prod
という名前の本番データベースが使用されています。
手順1: 行レベルのアクセス制御の追加
DMSコンソールV5.0 にログインします。
上部のナビゲーションバーで、 を選択します。
説明DMSコンソールをシンプルモードで使用する場合は、左上隅のアイコンの上にポインターを移動し、
を選択します。ページの右上隅にある [グローバル機密データ] をクリックし、行管理タブに移動します。
説明[インスタンスリスト] セクションの [有効] タブの [機密データリスト] をクリックして、行制御ページに移動することもできます。
コントロールグループを作成します。
[行制御] タブで、[コントロールグループの作成] をクリックし、コントロールグループ名を入力します。
行設定を追加します。
[行設定の追加] をクリックします。
行レベルのアクセス制御を実行するデータベース。 [データベース] ドロップダウンリストからデータベースを選択します。 キーワードを入力してデータベースを検索することもできます。
行レベルのアクセス制御を設定するテーブルと制御フィールドを選択します。
説明テーブルは、制御グループに1回だけ指定できます。 テーブルに指定できるコントロールフィールドは1つだけです。
[追加] をクリックします。
コントロール値を追加します。
コントロールグループの右側にある [詳細] をクリックします。
表示されるページで、[行値の追加] をクリックし、次のパラメーターを設定します。
パラメーター
説明
追加?
有効な値:
はい: 新しい値が既存の値に追加されます。
いいえ: 既存の値は新しい値に置き換えられます。
行値のコンテンツ
管理する値。The values to be managed. 一度に複数の値を追加できます。 複数入力する場合は、カンマ (,) で区切ります。
[インポート] をクリックします。
行の値をインポートすると、ページの上部にメッセージが表示されます。
ステップ2: 行権限の申請
DMS管理者とDBAを含むすべてのユーザーは、行のデータを照会する前に、特定の行に対する権限を申請する必要があります。
DMSコンソールV5.0 にログインします。
上部のナビゲーションバーで、 を選択します。
説明DMSコンソールをシンプルモードで使用する場合は、左上隅のアイコンの上にポインターを移動し、
を選択します。[Access applyTickets] ページで、ページの右上隅にある
を選択します。対象の行を選択し、追加をクリックします。行が選択したデータベース /テーブル /列セクションに表示されます。
権限の選択セクションで、クエリを指定し、期間と理由 を指定します。
パラメーターを設定したら、[送信] をクリックします。 承認を待ってから、[SQLコンソール] タブで制御されたデータを照会できます。
説明チケットが送信されたら、承認を待ちます。 チケットのステータスは、[ワークベンチ] タブの [マイチケット] セクションで確認できます。
もっと
行レベルのコントロールグループの削除: 行レベルのコントロールタブで、コントロールグループを削除できます。 制御グループが削除されると、行レベルの制御設定は無効になります。
行レベルのコントロールグループの編集: 行レベルのコントロールタブで、コントロールグループ名や設定されたコントロールフィールドなどの設定を変更できます。
よくある質問
Q: コントロール行のクエリ権限が付与されているにもかかわらず、[SQLコンソール] タブでクエリの実行が失敗するのはなぜですか。
A: 次の手順を実行してトラブルシューティングします。
ターゲットデータベースとテーブルに対するクエリ権限があることを確認してください。 特定の手順の詳細については、「手順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');