Amazon QuickSight のデータセットに RLS を適用しましたが、データアクセスに関する問題が発生しています。
簡単な説明
Amazon QuickSight データセットで行レベルセキュリティ (RLS) を使用する場合に発生する可能性がある一般的な問題は次のとおりです。
- 匿名 QuickSight ユーザーの QuickSight 埋め込みダッシュボードにデータが表示されない。
- 制限付きユーザーが引き続きすべてのデータを表示できる。
- 制限されていないユーザーがデータを表示できない。
- RLS を適用すると、「DatasetRulesInvalidColType」というエラーコードが表示される。
- 分析を作成すると、「DatasetRulesUserDenied」というエラーが表示される。
RLS には次の制限があります。
- RLS は QuickSight のエンタープライズエディションでのみ使用できる。
- RLS は、データセットルール内のフィールドについて、string、char、varchar などのテキストデータのみをサポートする。現在、RLS は日付フィールドまたは数値フィールドでは機能しない。
- 1 ユーザーあたりに適用されるルールレコードのフルセットは 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 エラーは、ユーザーがデータセットルールに含まれていない場合に発生します。このエラーを解決するには、データセットルールにユーザーを追加し、データセットを更新します。
関連情報
Using row-level security (RLS) with user-based rules to restrict access to a dataset
Using row-level security (RLS) with tag-based rules to restrict access to a dataset when embedding dashboards for anonymous users
Adding filter conditions (group filters) with AND and OR operators