Amazon QuickSight のデータセットに RLS を適用しましたが、データアクセスで問題が発生しています。
簡単な説明
Amazon QuickSight データセットで行レベルのセキュリティ (RLS) を使用するときに発生する可能性がある一般的な問題を次に示します。
- 匿名の QuickSight ユーザーの QuickSight 埋め込みダッシュボードでデータが表示されない。
- 制限付きユーザーが引き続きすべてのデータを見ることができる。
- 制限のないユーザーがデータを表示できない。
- RLS を適用すると、エラーコード DatasetRulesInvalidColType が表示される。
- 分析を作成すると、エラーコード DatasetRulesUserDenied が表示される。
注: RLS を使用するときは、次の点を考慮してください。
- RLS は QuickSight のエンタープライズ版でのみ使用できます。
- RLS は、データセットルールのフィールドで、string、char、varchar などのテキストデータのみをサポートします。現在、RLS は日付または数値フィールドでは機能しません。
- ユーザーごとに適用されるルールレコードの完全なセットは、999 個を超えてはなりません。999 個を超えるルールを持つデータセットは、データセットに RLS ルールを適用できない場合があります。
- QuickSight は null を空のフィールド値として扱うため、デフォルトの null 値を持つ空の行に RLS を適用することはできません。ただし、フィールド内のスペースはリテラル値として扱われるため、データセットルールはこれらの行に適用されます。
- データセットルールに追加されたユーザーのみが、定義されているルールに基づくデータを表示できます。他のユーザーはデータを表示できません。
- データセットルールで複数のフィールドを使用する場合、ルールは AND 演算子として機能します。OR 演算子は現在サポートされていません。
- RLS タグベースのルールは、GenerateEmbedUrlForAnonymousUser API を使用する匿名ユーザー用の埋め込みダッシュボードでのみサポートされます。GenerateEmbedUrlForRegisteredUser API を使用して登録ユーザー用のダッシュボードを埋め込んだ場合は、ユーザーレベルのルールの使用を検討してください。
解決方法
匿名ユーザー用の QuickSight 埋め込みダッシュボードでデータが表示されない
匿名の埋め込みダッシュボードにタグベースのルールを使用している場合、データを表示したり変更したりすることはできません。データを表示するには、ユーザーベースの RLS ルールをデータセットに追加する必要があります。
次のデータセットルールの例では、John Stiles は物流部門のデータのみを表示でき、Martha Rivera はデータセットのすべてのデータを表示できます。
UserName,Department
JohnStiles,Logistics
MarthaRivera,
注: データセットには、タグベースのルールとユーザーベースの RLS ルールの両方を適用できます。
制限付きユーザーが引き続きすべてのデータを見ることができる
データセットに含まれるルールが多過ぎると、RLS を正常に適用したとしても、制限付きユーザーは引き続きすべてのデータを表示できます。この問題を解決するには、データセットに含まれるルールが 999 個以下であることを確認します。UserName でユーザーを制限し、データセットルールに 999 名以上のユーザが含まれている場合は、QuickSight グループを作成します。ユーザーをグループに追加し、データセットルールで UserName の代わりに GroupName を使用します。
制限のないユーザーがデータを表示できない
制限のないユーザーがデータを表示できない理由として、次が考えられます。
- ユーザーがデータセットルールに存在しない。データセットルールをチェックして、目的の全ユーザーが含まれていることを確認します。
- UserName または GroupName が QuickSight のユーザーまたはグループと一致しない。データセットルールの UserName または GroupName を調べて、QuickSight のユーザーまたはグループと一致することを確認します。
RLS を適用すると、エラーコード DatasetRulesInvalidColType が表示される
DatasetRulesInvalidColType エラーは、日付フィールドまたは数値フィールドに RLS を使用する場合に発生します。
データセットルールで RLS を評価するために使用されるフィールドを調べて、データ型が String であることを確認します。データセットを編集して QuickSight で数値フィールドを String に変換することもできます。
分析を作成すると、エラーコード DatasetRulesUserDenied が表示される
この DataRulesUserDenied エラーは、ユーザーがデータセットルールに含まれていない場合に発生します。このエラーを解決するには、ユーザーをデータセットルールに追加し、データセットを更新します。
関連情報
データセットへのアクセスを制限するためのユーザーベースのルールでの行レベルのセキュリティ (RLS) の使用
匿名ユーザー用のダッシュボードの埋め込み時におけるデータセットへのアクセスを制限するためのタグベースのルールでの行レベルのセキュリティ (RLS) の使用
AND および OR 演算子を使用したフィルター条件 (グループフィルター) の追加