mcpField
P
power-bi-security

power-bi-security

github.com/julianobarbosaセキュリティ1455 回インストール2 日前に更新
リポジトリ

power-bi-security について

pbi-cli-toolでPower BIモデルの行レベルセキュリティロールとパースペクティブを管理するスキルです。ロール設定やモデルのエクスポート、監査に加え、RLS設定とパースペクティブの注意点を扱います。

主な機能

  1. 01セキュリティロールの一覧・確認・作成・削除
  2. 02ユーザー別パースペクティブの管理
  3. 03モデルをTMDL形式でエクスポート
  4. 04JSON出力によるロール監査
  5. 05RLS設定手順と注意点

活用シーン

  1. 01地域や部門別のアクセスロールを設定
  2. 02対象者別にモデルの表示を簡素化
  3. 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 をエクスポートしてください。複雑な複数テーブルのロールを記憶だけを頼りに復元するのは大変です。

コメント