buchizoRBACで割り当てられたロールと対象者のメアドを取得したいみたいな話があったので。メール送信先のアカウント名のリストを取りたかったんです。諦めてARMからロール情報取る方法を検討してみます。2019詳細は分かりませんけど、コード書きのリハビリにざっと作ってみました。深く考えずダラダラ書いたので綺麗ではないです。その1その2書いてて思ったけどFunctions要素はあんまりないです。APIでユーザー情報を取得します。その1はユーザーのみ、重複あっても気にせず取得してるのでちょっと効率悪い感じ。APIでディレクトリオブジェクトの情報をとってきてるのでグループの情報も取れます。コード的には泥臭い感じ。いうよりユーザー・グループなど明確に処理を分けたらもう少し綺麗になるかも。dynamicのままJSON扱うのが嫌になってきたのですが何か間違ってるかもしれない。割り当てられたロールの情報などはARMのMicrosoft.Authorization/roleAssignmentsを呼べば取れます。principalIdに割り当てられたオブジェクト(ユーザーやグループ、AppのオブジェクトID)が、roleDefinitionIdに割り当てられたロールのIDが入ってます。ロールの表示名などが欲しければARMのそのIDに対してGet投げればとれます。idまでだったかな)。いう感じの作りに対してARMのAPIは慣れるまでちょっと戸惑いますね。ADに登録したアプリケーションを使用するようにしています。テナントID(テナント名)、ClientId(AppId)、ClientSecret(AppSecret)は環境変数などに保存しておきましょう。デバッグ時はsecret.settings.jsonなど適当に作って読み込むようにしています。APIを呼び出せるようにAPIのアクセス許可を追加しておきます。例:※設定後は忘れず管理者の同意を与えますボタンでアクセス許可を承認しておきます。ARMのAPIはRBACが有効なのでサブスクリプションや対象のリソースに設定したアプリケーションが適切な権限を持っている必要があります。今回はサブスクリプションに閲覧者ロールで追加しておけば十分でしょう。各リソースなどのアクセス制御(IAM)でロールを割り当てておきます。Identitiesを使って行う場合も同様です。APIが入ってなかったので今回は考慮していない)サービスの権限ではなく利用者の権限で実現したいサービスのアカウント(アプリケーション)でするのもいいけど利用者自身の権限で実施したいとかありますよね多分。簡単な手法はFunctionsであればAuthentication/Authorization(EasyAuth)機能を使う方法があります。EasyAuth使えばFunctionsに認証をポチポチするだけで行えます。Tokenが取得できます。APIにアクセスする権限は含まれてないのでエラーになります。Explorerで追加の設定を行うことで権限を追加できます。TokenがX-MS-TOKEN-AAD-ACCESS-TOKENリクエストヘッダーに入ります。あとはこのトークンをBearerとしてAuthorizationヘッダーに付与すればOK。API)にアクセスしたい場合は上記の方法は使えません。Tokenを得る必要があります。}それぞれのAPIを指定して呼び出してBearerトークンを取得します。);ここで指定するClientId、ClientSecretはEasyAuthを設定した際に作成されるものになります。ADから参照(Secretは見れないので追加するなり)しましょう。APIが...EasyAuthをローカルデバッグしたいEasyAuthはAzure上で利用できる機能です。デバッグするにはちょっと面倒くさいですね。Proxiesとngrokを使います。ローカル上でFunctionsを実行します。ngrokを起動してローカルFunctionsのポートにトンネルするようにします。FunctionsのProxiesを追加してngrokに飛ばすように設定します。FunctionsにEasyAuthを設定します。後はFunctionsのProxiesのURLにアクセスすればEasyAuthによる認証が走ってその後ローカルでデバッグしているFunctionsにアクセスがきます。コメントをキャンセルコメントを入力してください。以下に詳細を記入するか、アイコンをクリックしてログインしてください。アカウントを使ってコメントしています。アカウントを使ってコメントしています。アカウントを使ってコメントしています。アカウントを使ってコメントしています。新しいコメントがついたらメールで通知。免責事項このBlogおよびコミュニティにおける発言やコメントは、当方の所属する会社・団体の正式な見解またはコメントではありません。Blog.%d人のブロガーが「いいね」をつけました。