dv-security について
dv-security は、Dataverse 環境のセキュリティロールを管理するスキルで、ロール割り当てや自身の権限昇格を行う管理者向けです。変更前の内容提示と確認を求め、Dataverse CLI で割り当ての反映を検証します。
主な機能
- 01ユーザーへのセキュリティロール割り当て
- 02環境をまたいだ一括割り当て
- 03ロール割り当て結果の検証
- 04手順に沿った自己昇格
- 05Microsoft Purview への昇格監査記録
活用シーン
- 01環境内でユーザーにロールを付与
- 02複数環境に同じロールを割り当て
- 03割り当ての成功を確認
- 04割り当て失敗後に自己昇格を申請
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ microsoft/ dataverse-skills --skill dv-securityインストール後、Claude Code で/dv-securityを入力して読み込まれたか確認します。
詳細
スキル:セキュリティ — ロールの割り当てと自己昇格
このスキルでは、ロールの変更にファーストパーティ CLI の PAC CLI を使用し、Dataverse CLI で確認します。 ロール操作に Python スクリプトを書かないでください。
実行前にプレビューする
ロールの付与と自己昇格は破壊的な操作です(セキュリティ態勢を変更し、Purview に記録されます)。実行前に、対象ユーザー、ロール、環境を平易な文章でプレビューしてください。不明な値にはプレースホルダー(<ENV_URL>、<USER_EMAIL>)を使用し、同じターンで確認と不足している値の提示を求めてください。pac admin のコードブロックは表示しないでください。セキュリティ変更を承認するために、ユーザーが CLI の構文を読む必要はありません。
重要な原則: 最初の応答を読めば、これから行われる操作をユーザーが判断できるようにしてください。「どの環境ですか?」だけでは不十分です。1 行の平易な文章でプレビューすれば、この要件を満たせます。
例
ロールの割り当て(ユーザー指定済み、環境未指定):
- ❌「対象の環境を指定してください。」
- ✅「
[email protected]に<ENV_URL>の System Administrator を割り当てます。続行するには確認し、対象環境の URL(または一覧表示して一括処理する場合はall)を指定してください。」
すべての環境での管理者アクセス:
- ❌「メールアドレスを指定してください。」
- ✅「環境の一覧を取得し、
<YOUR_UPN>に各環境で System Administrator を並列で割り当てます。いずれかの環境でassign-userが失敗した場合は、その環境について自己昇格に切り替えます(Purview に記録されます)。続行するには確認し、UPN を指定してください。」
スキルの対象範囲
| 必要な操作 | 代わりに使用 |
|---|---|
| テーブル、列、リレーションシップの作成または変更 | dv-metadata |
| 組織の設定、監査、一括削除、保持の管理 | dv-admin |
| レコードのクエリまたは読み取り | dv-query |
| レコードの書き込み、更新、削除 | dv-data |
| テナントレベルのガバナンス(DLP、環境のライフサイクル) | pac admin --help |
前提条件
- PAC CLI がインストールされ、認証済みであること(
pac auth create) - 対象環境で System Administrator ロールを持っていること(自己昇格の場合は Global/PP/D365 Admin)
- 有効な認証プロファイルがあること:
pac auth list - ヘッドレス/送信先制限ホスト:SDK はロール/ユーザー/ビジネスユニットの操作を処理します。PAC のみの操作にはサービスプリンシパルを使用してください。
python scripts/auth.py --checkで送信先への接続を確認します。詳しくはdv-connect/references/headless-hosts.mdを参照してください。
ユーザーにセキュリティロールを割り当てる
pac admin assign-user --user <email-or-object-id> --role "System Administrator" --environment <url>
引数
| 引数 | エイリアス | 必須 | 説明 |
|---|---|---|---|
--user | -u | はい | ユーザーのメールアドレス(UPN)または Azure AD オブジェクト ID |
--role | -r | はい | セキュリティロール名(例:System Administrator、Basic User) |
--environment | -env | はい | 対象環境の URL または ID |
--application-user | -au | いいえ | ユーザーをアプリケーションユーザー(サービスプリンシパル)として扱います |
--business-unit | -bu | いいえ | ビジネスユニット ID。既定では呼び出し元のビジネスユニットが使用されます |
割り当てを確認する — 終了コード 0 は成功の証明ではありません
pac admin assign-user は、失敗した場合でも終了コード 0 を返します(環境を解決できない、ロール名が誤っている、ユーザーが不明など)。終了コードが正常だからといって、成功したと判断しないでください。
- 終了コードだけでなく、出力を確認してください。 失敗しても終了コードは 0 ですが、エラー(
environment ... not found、role ... does not exist)が出力されます。出力にエラーが含まれている場合は停止してください。 - 使用した
--environmentと完全に一致する値で確認してください。再解決したり短縮したりしないでください。別の ID を指定すると、誤った組織で気付かないまま「成功」します。Dataverse CLI の読み取りでユーザーのロールをクエリします。
# Resolve the user's systemuserid, then list their assigned roles.
# --context carries plugin/skill/agent attribution on the managed CLI call.
dataverse api request --target dataverse --method GET \
--path "/api/data/v9.2/systemusers?%24select=systemuserid&%24filter=internalemailaddress eq '[email protected]'" \
--environment <same-url-as-assign> \
--context "app=dataverse-skills/<ver>;skill=dv-security;agent=<agent>"
dataverse api request --target dataverse --method GET \
--path "/api/data/v9.2/systemusers(<systemuserid>)/systemuserroles_association?%24select=name" \
--environment <same-url-as-assign> \
--context "app=dataverse-skills/<ver>;skill=dv-security;agent=<agent>"
最初のクエリで行が返されない場合、サインイン ID は internalemailaddress(Primary Email)ではなく domainname(AAD UPN)に存在する可能性があります。%24filter=domainname eq '<upn>' を使って再試行してください。オブジェクト ID を指定して割り当てた場合は、azureactivedirectoryobjectid eq '<objectid>' で再試行してください。行が見つからないことは、ロール付与が失敗した証明にはなりません。
対象のロールが存在しない場合、割り当ては反映されていません。再実行して出力を確認するか、自己昇格に切り替えてください。
バッチワークフロー:複数の環境にロールを割り当てる
並列で実行してください。決して順番に実行しないでください。
Step 1: pac admin list -> Get all environments
Step 2: Filter by type if needed (e.g., Developer, Sandbox) -> Identify targets
Step 3: Confirm with user — show list of target environments
Step 4: Run ALL assignments in a single bash call:
pac admin assign-user --user [email protected] --role "System Administrator" --environment https://dev1.crm.dynamics.com &
pac admin assign-user --user [email protected] --role "System Administrator" --environment https://dev2.crm.dynamics.com &
pac admin assign-user --user [email protected] --role "System Administrator" --environment https://dev3.crm.dynamics.com &
wait
Step 5: Verify each landed (exit 0 is not proof — see above), then report ("Assigned + verified on 3/3 environments")
重要:ロールを割り当てる前に、影響を受ける環境を必ず確認し、各割り当てが反映されたことを確認してください。終了コードが正常でも、成功したとは限りません。
テナント管理者による自己昇格(フォールバック)
自己昇格は、他のユーザーへのロール割り当てとは本質的に異なります。 pac admin assign-user <other> は権限を他のユーザーに付与しますが、pac admin self-elevate は権限を呼び出し元に付与します。リスクの性質と監査の扱いが異なるため、確認手順はより厳格です。
pac admin assign-user が「user has not been assigned any roles」というエラーで失敗した場合は、次を使用してください。
pac admin self-elevate --environment https://myorg.crm.dynamics.com
- グローバル管理者、Power Platform 管理者、または Dynamics 365 管理者の権限が必要です
- すべての昇格は Microsoft Purview に記録されます
--environmentを省略した場合は、アクティブな認証プロファイルが使用されます
自己昇格の確認手順(assign-user より厳格)
pac admin self-elevate を実行する前に、エージェントは必ず次の手順を行ってください。
- リスクを明示します。 実行前の概要に、次の文言(または同等の表現)を含めます。
"This grants YOU System Administrator on
<env>. The action is logged to Microsoft Purview with your identity and timestamp." - 理由を確認します。 チケット ID、インシデント番号、または
"dev sandbox access — no ticket"のような自由記述のメモを、一行で尋ねます。理由を実行前の概要で復唱し、何が記録されるかをユーザーに確認してもらいます。 - 上記の(1)と(2)の両方をユーザーが確認した後、明示的な確認を待ちます。 リスクの説明と理由が表示される前に伝えられた単なる「はい」は受け付けないでください。
- 黙ってフォールバックしないでください。
pac admin assign-userが失敗した場合は、まず失敗を伝えてから、この手順に従ったself-elevateを提案してください。自動的に連続実行してはいけません。
フロー:必ず最初に pac admin assign-user を試してください。admin self-elevate は、上記の手順を条件として実行する、文書化されたフォールバックです。
CLI のフォールバック:pac admin self-elevate がエラーになる場合は、Power Platform Admin Center → 環境を選択 → Access → System Administrator role の順に操作して、手動で自己昇格してください。すべての昇格は引き続き Purview に記録されます。(PAC CLI 2.6.4 では、CLI がバックエンドに空の api-version= を送信するため、コマンドが bolt.authentication.http.AuthenticatedClientException / ApiVersionInvalid で失敗します。)
安全ルール
- System Administrator ロールを割り当てる前に、必ず確認してください
- バッチ操作の前に、対象環境の一覧を表示してください
- 自己昇格は記録され、監査可能です。ユーザーに警告してください