power-bi-security について
pbi-cli-toolでPower BIモデルの行レベルセキュリティロールとパースペクティブを管理するスキルです。ロール設定やモデルのエクスポート、監査に加え、RLS設定とパースペクティブの注意点を扱います。
主な機能
- 01セキュリティロールの一覧・確認・作成・削除
- 02ユーザー別パースペクティブの管理
- 03モデルをTMDL形式でエクスポート
- 04JSON出力によるロール監査
- 05RLS設定手順と注意点
活用シーン
- 01地域や部門別のアクセスロールを設定
- 02対象者別にモデルの表示を簡素化
- 03セキュリティ監査でロール設定を確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ julianobarbosa/ claude-code-skills --skill power-bi-securityインストール後、Claude Code で/power-bi-securityを入力して読み込まれたか確認します。
詳細
Power BI セキュリティスキル
Power BI モデルの行レベルセキュリティ(RLS)とパースペクティブを管理します。
前提条件
pipx install pbi-cli-tool
pbi-cli skills install
pbi connect
セキュリティロール(RLS)
# List all security roles
pbi security-role list
# Get role details
pbi security-role get "Regional Manager"
# Create a new role
pbi security-role create "Regional Manager" \
--description "Restricts data to user's region"
# Delete a role
pbi security-role delete "Regional Manager"
パースペクティブ
パースペクティブでは、ユーザーに表示するテーブルと列を制御します。
# List all perspectives
pbi perspective list
# Create a perspective
pbi perspective create "Sales View"
# Delete a perspective
pbi perspective delete "Sales View"
ワークフロー:RLS の設定
# 1. Create roles
pbi security-role create "Sales Team" --description "Sales data only"
pbi security-role create "Finance Team" --description "Finance data only"
# 2. Verify roles were created
pbi --json security-role list
# 3. Export full model for version control (includes roles)
pbi database export-tmdl ./model-backup/
ワークフロー:ユーザーに焦点を当てたパースペクティブの作成
# 1. Create perspectives for different audiences
pbi perspective create "Executive Dashboard"
pbi perspective create "Sales Detail"
pbi perspective create "Finance Overview"
# 2. Verify
pbi --json perspective list
一般的な RLS パターン
地域ベースのセキュリティ
認証済みユーザーの地域でフィルターするロールを作成します。
pbi security-role create "Region Filter" \
--description "Users see only their region's data"
次に、モデル内で DAX フィルター式を使用してテーブルのアクセス許可を定義します(TMDL または Power BI Desktop を使用)。
部門ベースのセキュリティ
pbi security-role create "Department Filter" \
--description "Users see only their department's data"
マネージャー階層
pbi security-role create "Manager View" \
--description "Managers see their direct reports' data"
ベストプラクティス
- 明確で説明的な名前を付けてロールを作成します
- アクセス制限を説明する説明を必ず追加します
- バージョン管理のため、モデルを TMDL としてエクスポートします(
pbi database export-tmdl) - 本番環境に公開する前に、RLS を十分にテストします
- パースペクティブを使って、さまざまなユーザーグループ向けにモデルを簡素化します
- ロールとグループの対応関係を外部に記録します(Power BI Service では、RLS ロールを Azure AD グループに対応付けます)
- 自動セキュリティ監査には
--json出力を使用します:pbi --json security-role list
注意事項
USERPRINCIPALNAME()の戻り値は Desktop と Service で異なります: Desktop ではサインイン中のユーザーの AAD UPN が返されます。Service では埋め込みトークンの UPN が返されますが、ゲストユーザーや B2B ID では異なる場合があります。ローカルテストを通過した RLS が、Service で気付かないうちに失敗することがあります。security-role createで作成されるのはロールの枠組みだけです。テーブルのフィルター式は TMDL または Desktop で追加する必要があります: フィルター式のないロールは、Service では「適用済み」と表示されますが、すべての行を返します。必ず作成後に TMDL をエクスポートし、各テーブルに想定どおりのtablePermissionブロックがあることを確認してください。- オブジェクトレベルセキュリティとパースペクティブは同じものではありません: パースペクティブで非表示になるのはフィールド一覧のオブジェクトだけです。ユーザーは DAX を使用して、非表示のテーブルや列を引き続きクエリできます。実際のセキュリティには OLS を使用してください(TMDL では
metadataPermissionsとしてエンコードされます)。パースペクティブは UX 専用です。 - RLS ロールは Service で個々のユーザーではなく AAD グループに対応付けます:
[email protected]をロールに直接追加すると Desktop では機能しますが、ユーザーが組織を離れた場合、Service では管理が煩雑になります。必ずグループに紐付けてください。TMDL にはロール名しか含まれないため、ロールとグループの対応関係は外部に記録してください。 - ユーザーマッピングテーブルで
LOOKUPVALUEを使った動的 RLS は、データの更新遅延の影響を受けます: 新しいユーザーをマッピングテーブルに追加しても、データセットが更新されていない場合、そのユーザーにはエラーなしで行が一切表示されません。更新スケジュールはユーザーのオンボーディング頻度に合わせる必要があります。 security-role deleteはロールとそのすべてのフィルター式を一括で削除します: 部分的なクリーンアップはできず、レポートがそのロールに依存していても警告は表示されません。必ず先に TMDL をエクスポートしてください。複雑な複数テーブルのロールを記憶だけを頼りに復元するのは大変です。
コメント
Markdown 対応