Power Platform 管理センターでDLPポリシーの設定や設定確認を実施したことがあるからはご存じかと思いますが、DLPポリシーの設定画面はかなり操作性が悪いです。そのため、DLPポリシーをひとつ設定する作業(設定後の値確認も含む)で1時間前後かかる場合があります。
この作業を短縮するために設定確認用のPowerShellスクリプトを作りました。
設定用のスクリプトについては以下の投稿に記載しています。
https://qiita.com/wataruf01/items/90218c7e7dd0958b3db3
使い方
まずは、スクリプトを実行するために必要なモジュールをPCにインストールします。管理者権限で下記コマンドを実行してください。
Install-Module -Name Microsoft.PowerApps.Administration.PowerShell
Install-Module -Name Microsoft.PowerApps.PowerShell -AllowClobber
モジュールのインストールが完了したら、下記スクリプトを使います。
以下の2箇所はテナントによって置き換えてください。
・実行アカウントのID/パスワード
・対象のDLPポリシーのID
# 実行アカウント
$adminUserName = "XXX@XXX.onmicrosoft.com"
$securePassword = "XXX" | ConvertTo-SecureString -AsPlainText -Force
Add-PowerAppsAccount -Username $adminUserName -Password $securePassword
# 対象のDLPポリシーを指定
$dlpPolicy = Get-DlpPolicy -PolicyName "XXXX-XXXX-XXX-XXXX-XXXX"
$connectors = @()
$businessDataGroup = $DLPPolicy.connectorGroups | where classification -EQ "Confidential"
foreach($connector in $businessDataGroup.connectors)
{
$obj = New-Object PSObject
$obj | Add-Member -MemberType NoteProperty -Name Policy -Value $DLPPolicy.displayName
$obj | Add-Member -MemberType NoteProperty -Name Group -Value "BusinessDataGroup"
$obj | Add-Member -MemberType NoteProperty -Name Name -Value $connector.name
$obj | Add-Member -MemberType NoteProperty -Name ID -Value $connector.id
$obj | Add-Member -MemberType NoteProperty -Name Type -Value $connector.type
$connectors += $obj
}
$nonBusinessDataGroup = $DLPPolicy.connectorGroups | where classification -EQ "General"
foreach($connector in $nonBusinessDataGroup.connectors)
{
$obj = New-Object PSObject
$obj | Add-Member -MemberType NoteProperty -Name Policy -Value $DLPPolicy.displayName
$obj | Add-Member -MemberType NoteProperty -Name Group -Value "NonBusinessDataGroup"
$obj | Add-Member -MemberType NoteProperty -Name Name -Value $connector.name
$obj | Add-Member -MemberType NoteProperty -Name ID -Value $connector.id
$obj | Add-Member -MemberType NoteProperty -Name Type -Value $connector.type
$connectors += $obj
}
$blockedGroup = $DLPPolicy.connectorGroups | where classification -EQ "Blocked"
foreach($connector in $blockedGroup.connectors)
{
$obj = New-Object PSObject
$obj | Add-Member -MemberType NoteProperty -Name Policy -Value $DLPPolicy.displayName
$obj | Add-Member -MemberType NoteProperty -Name Group -Value "BlockedGroup"
$obj | Add-Member -MemberType NoteProperty -Name Name -Value $connector.name
$obj | Add-Member -MemberType NoteProperty -Name ID -Value $connector.id
$obj | Add-Member -MemberType NoteProperty -Name Type -Value $connector.type
$connectors += $obj
}
$connectors | Export-Csv -Path .\DLPPolicy.csv -Encoding UTF8 -NoTypeInformation
テナントによって置き換える対象は以下の2つです。
ひとつめ。実行アカウントのID/パスワード。
$adminUserName = "XXX@XXX.onmicrosoft.com"
$securePassword = "XXX" | ConvertTo-SecureString -AsPlainText -Force
ふたつめ。対象チームのID。
#対象のDLPポリシーを指定
$dlpPolicy = Get-DlpPolicy -PolicyName "XXXX-XXXX-XXX-XXXX-XXXX"
対象のDLPポリシーのIDはPower Platform 管理センターから入手できます。該当のDLPポリシーを開いたときにアドレスバーに表示されるGUIDがそのDLPポリシーのIDです。
この部分をコピーして先ほどのスクリプトで使用します。
コマンドは新旧の2つがある。新しいほうを使用すること
Power Platform関連のコマンドを検索すると2種類のコマンドが見つかります。片方は旧コマンドで片方が新しく登場したほうです。コマンド名に「Admin」が付いていないほうが新しいコマンドです。
例:
既存のポリシーを取得する
・旧コマンド: Get-AdminDlpPolicy
・新コマンド: Get-DlpPolicy
これからPower PowerPlatform関連のスクリプトを作成する際は新コマンドを使うようにしたほうがよいです。
参考:
吉田の備忘録「Power Apps の特定のデータ損失ポリシーにカスタムコネクタを追加する方法」
https://memo.tyoshida.me/power-platform/powerapps/power-apps-dlp-custom-connector-powershell/
以上です。