MoreBeerMorePower

Power Platform中心だけど、ノーコード/ローコード系を書いてます。

Teams のメンバー追加・削除に連動させて Power Apps のアクセス権を管理する

Teams が業務の単位になってくるとそれに連動して Power Apps のアプリにもアクセス権を付与したいという要望も出てくると思います。

Teams の Power Apps だと通常の Power Apps モバイルアプリから使えないしという場合には、通常 Office 365 グループの SecurityEnabled属性を変更してセキュリティグループにしてしまうのが対応方法になります。

idea.tostring.jp

この投稿では、例えば上の記事に書かれているようなサイドエフェクトを気にする場合 (このグループをライセンスの付与に利用している) や、PowerShellのAzure AD moduleをインストールできないような場合を想定して、 Power Automateを利用した特定のアプリへのアクセス権を付与・削除方法について紹介します。

使うコネクター

今回のフローに利用するコネクターは以下の3つです。

  1. Microsoft Teams
  2. Office 365 Users
  3. Power Apps for Makers

特にアプリへのアクセス権付与・削除には、Power Apps for Makers コネクターの Edit App Role Assignment アクションを利用します。

このアクションを利用するためには

  • テナントID
  • Power Apps の環境ID
  • App ID

が必要になりますが、いずれもアプリの詳細画面に表示されていますので、事前に取得しておいてください。

f:id:mofumofu_dance:20210119163129p:plain
アクセス権の自動付与・削除に必要な情報

アクセス権付与フロー

アクセス権はチームに参加したタイミングで付与することとします。この場合、フローのトリガーになるのは Microsoft Teams コネクターの "When a new team member is added" です。

トリガーに続いて、Compose (作成) アクションで テナントID、環境ID、App ID を定義しておきます。

アクセス権を付与するためには、対象者のId (Azure ADのObject ID) が必要になるので、これを Office 365 Users コネクターの "Get user profile (V2))" アクションで取得します。

最後に取得した情報から、Power Apps for Makers の "Edit App Role Assignment" アクションに必要な情報を埋め込んでいきます。

f:id:mofumofu_dance:20210119163342p:plain
アクセス権を与える方のフロー

Edit App Role Assignment の設定

設定
PowerApp Name App ID
Filter Query environment -eq '環境ID'
put email Office 365 Users で取れた Mail (動的コンテンツ)
put tenantId テナントID
put id Office 365 Users で取れた Id (動的コンテンツ)
put type User
put roleName CanView, CanEdit のいずれか

特に最後の "roleName"ですが、"CanView" は 対象アプリの実行権限のみ持つユーザー、"CanEdit" は 対象アプリのオーナー (編集権限あり) になります。

これでTeamsのメンバーを追加するたびに対象のアプリに対してアクセス権が自動付与されます。

アクセス権削除フロー

アクセス権を奪う方は逆に、"When a new team member is removed" トリガーを利用します。

アクセス権を付与したフローとほとんど同一ですが、最後の Power Apps for Makers の "Edit App Role Assignment" アクションに設定する情報が異なります。

f:id:mofumofu_dance:20210119164916p:plain
アクセス権を削除するフロー

アクセス権削除では上図のとおり、"delete id"という項目に値をセットしますが、ここには"Permission Id"を入れる必要があります。

対象となるアプリの "Permission Id"は以下のようなフォーマットになっています。

/providers/Microsoft.PowerApps/apps/[App ID]/permissions/[Office 365 Usersで取れるId]

動的コンテンツを組み合わせて上のようなフォーマットに従うよう、設定してください。

おわり

正攻法で Teams のグループ に対して Power Apps のアクセス権を付与・削除するのであればPowerShellを利用してグループの設定を変更するのが簡単です。

ただ何らかの制限があるような場合には、Power Automate のアクションを組み合わせることで、手軽に自動化することもできます。

利用される状況に合わせて選択できるように、一度試しておくとよいかもしれません。