データ管理 (DMS) は、NoSQLデータベースを除くDMSに接続されているすべてのデータベースに対して行レベルのアクセス制御を提供します。 さまざまなユーザーがアクセスできるのは、行レベルの制御テーブルでアクセス権限が付与されている行のみです。 例えば、セールスマネージャは、自身が担当する地域に関するデータのみを閲覧することができ、他の地域に関するデータを閲覧することはできない。
前提条件
行レベルのアクセス制御を設定するデータベースインスタンスは、セキュリティコラボレーションモードで管理されます。 詳細については、「インスタンスの制御モードの表示」をご参照ください。
背景情報
ほとんどの場合、データのセキュリティを確保するために、フィールドレベルのデータ保護と行レベルのデータ保護が使用されます。
フィールドレベルのデータ保護は、フィールドのアクセス制御を設定することによって実装されます。
機密フィールドを保護するために、フィールドに異なる機密レベルを設定し、これらのフィールドをマスクまたは部分的にマスクできます。 詳細については、「機密データの管理」をご参照ください。
たとえば、統計分析を担当する従業員は、注文テーブルで顧客の電子メールアドレスを表示できません。
行レベルのデータ保護は、行のアクセス制御を構成することによって実装されます。
行レベル制御テーブルでは、すべての行は、指定されたフィールドの1つまたは複数の特定の制御値によって区別されます。 行に対するアクセス権限がある場合にのみ、行にアクセスできます。
たとえば、チェーン企業で働く従業員は、担当するリージョンに関するデータのみを表示でき、他のリージョンに関するデータは表示できません。
制限事項
ApsaraDB RDS for MySQLやPolarDBデータベースなどのリレーショナルデータベースのみが行レベルのアクセス制御をサポートしています。
Security Collaborationモードで管理されるDMSインスタンスのみが、行レベルのアクセス制御をサポートします。
行レベルのアクセス制御をサポートするのは物理データベースのみです。 論理データベースは行レベルのアクセス制御をサポートしていません。
行レベルの制御テーブルのすべての行ではなく、特定の行のみにアクセス権限がある場合は、SQL文を実行してテーブル内のデータを照会、変更、または削除するときに、次の制限事項に注意してください。
行をフィルタリングするために、SQL文のコントロールフィールドの値を指定する必要があります。 指定された値は、コントロールフィールドの値リスト内になければなりません。
フィルター条件に関する次の制限に従う必要があります。
WHERE句では、
=
およびin
演算子のみを使用できます。OR、XOR、論理NOTなどの論理演算子は使用できません。
用語
コントロールテーブル、コントロールフィールド、およびコントロール値
行レベル制御テーブル: 行レベルのアクセス制御を設定するテーブル。
制御フィールド: 行レベルのアクセス制御が行レベルの制御テーブルに実装されるフィールド。
制御値: 制御フィールドの値。
行レベルの権限: 行に対する権限。 行へのアクセスは、行レベル制御テーブルの制御フィールドの制御値に基づいて制御されます。
単一の行値をマップする特定の行に対する権限: 行へのアクセスは、行値で指定された1つ以上の制御値に基づいて制御されます。
すべての行に対する権限: 行レベルの制御テーブルのすべての行へのアクセスが許可されています。
コントロールグループ: 異なるテーブルで同じコントロール値を持つコントロールフィールドをコントロールグループに追加できます。
たとえば、テーブルAとテーブルBは行レベルの制御テーブルであり、同じ制御値を持ちます。 この場合、コントロールグループを作成して、表aおよび表Bの行レベルのアクセス制御を管理できます。
行レベルのアクセス制御の設定
行レベルのアクセス制御を設定するには、DMS管理者、データベース管理者 (DBA) 、またはセキュリティ管理者であることを確認します。 ユーザーの役割の詳細については、「システムの役割の表示」をご参照ください。
DMSコンソールV5.0 にログインします。
上部のナビゲーションバーで、 を選択します。
説明DMSコンソールをシンプルモードで使用する場合は、左上隅のアイコンの上にポインターを移動し、
を選択します。ページの右上隅にある [グローバル機密データ] をクリックして、[機密データリスト] ページに移動します。
ロー · レベル制御 タブをクリックします。
追加制御グループ をクリックします。
追加制御グループ ダイアログボックスで、[コントロールグループ] フィールドにコントロールグループ名を入力します。
1つ以上の行レベルの制御テーブルと制御フィールドを指定します。 次に、[追加] をクリックします 。
行設定の追加 をクリックします。
[データベース名の入力] ドロップダウンリストからデータベースを選択します。 1つ以上のキーワードを入力してデータベースを検索することもできます。
行レベルのアクセス制御を設定するテーブルと制御フィールドを選択します。
オプション: 行設定の追加 をクリックして、同じコントロール値を使用する行レベルのコントロールテーブルを追加します。
テーブルに行レベルのアクセス制御を設定した後、必要な行レベルのアクセス許可を申請する前に、[SQLConsole] タブでテーブルのデータを表示することはできません。
オプション: 行の値に1つ以上のコントロール値を指定します。 この手順は、行レベルのコントロールテーブルの行値をマップする行のアクセス許可を申請する必要がある場合に必要です。
管理するコントロールグループを見つけて、[操作] 列の [詳細] をクリックします。
制御値詳細 パネルで、追加行値 をクリックします。
輸入行値 ダイアログボックスで、1つ以上のコントロール値を行値に追加するか、行値をリセットするかを指定します。
Yes: 行値に1つ以上のコントロール値を追加します。
No: 元の制御値を新しい制御値で上書きします。
[行値のコンテンツ] フィールドに1つ以上のコントロール値を入力して。
説明行の値には複数のコントロール値を指定できます。 複数の制御値はコンマ (,) で区切ります。 行値に対する権限を申請した後、行値で指定されたコントロール値をマップする複数の行にアクセスできます。
たとえば、従業員は中国の北京と上海でのみ顧客のデータを表示できます。 この場合、行値のコンテンツフィールドに
北京、上海
と入力できます。 従業員が行値の権限を申請した後、従業員は北京と上海の顧客のデータを表示できます。
行レベルの権限を申請する
DMSコンソールV5.0 にログインします。
上部のナビゲーションバーで、 を選択します。
説明DMSコンソールをシンプルモードで使用する場合は、左上隅のアイコンの上にポインターを移動し、
を選択します。ページの右上隅で、 を選択します。
データベース名を入力します。
説明パーセント記号 (%) をプレースホルダーとして使用して、ファジー一致モードでデータベースを検索できます。
行レベルの権限スコープを選択します。
Single: 1行の値に対する権限を申請できます。
説明行値は、複数の制御値を含むことができる。 行値に対する権限を申請した後、行値で指定されたコントロール値をマップする複数の行をクエリ、エクスポート、および変更する権限が付与されます。
制御値は、テーブル内の複数の行をマッピングし得る。 コントロール値を含む行値に対する権限がある場合は、テーブル内のコントロール値をマップする複数の行を照会、エクスポート、および変更できます。
すべて: 行レベル制御テーブルのすべての行にアクセスできます。
[検索] をクリックします。
適用する行レベルの権限を選択し、[] をクリックします。
説明[行の値] 列に表示されるハイフン (
-
) は、テーブル内のすべての行に対する権限があることを示します。申請する権限のタイプと有効期間を選択し、理由フィールドに申請理由を入力します。
[送信] をクリックします。
アプリケーションが承認された後、コントロールテーブルの特定の行またはすべての行のデータを照会、エクスポート、および変更できます。
説明行レベルの権限を解放するには、次のいずれかの方法を使用します。
通常のユーザーの場合は、[権限] ページに移動し、必要に応じて権限を表示および解放します。 詳細については、「所有権限の表示」をご参照ください。
管理者の場合は、上部のナビゲーションバーで
をクリックします。 左側のナビゲーションウィンドウで、[ユーザー] をクリックします。 表示されるページで、権限を取り消すユーザーを見つけ、[操作] 列の を選択して、ユーザーの権限を表示および取り消します。