January 22, 2018

Azureのリソースグループ限定 共同作成者をいい感じに作る

共同作成者は、ちょっと強い Azureのリソースグループは、リソースを任意のグループにまとめ、ライフサイクルや権限の管理を一括して行える便利なコンセプトです。 ユースケースのひとつに、”本番とは分離した開発向けリソースグループを作って、アプリ/インフラ開発者に開放したい”、があります。新しい技術は試行錯誤で身につくので、こういった環境は重要です。 なのですが、このようなケースで、権限付与の落とし穴があります。 サブスクリプション所有者が開発用リソースグループを作る スコープを開発用リソースグループに限定し、開発者に対し共同作成者ロールを割り当てる 開発者はリソースグループ限定で、のびのび試行錯誤できて幸せ 開発者がスッキリしたくなり、リソースグループごとバッサリ削除 (共同作成者なので可能) 開発者にはサブスクリプションレベルの権限がないため、リソースグループを作成できない 詰む サブスクリプション所有者が、リソースグループ作成と権限付与をやり直し 共同作成者ロールから、リソースグループの削除権限だけを除外できると、いいんですが。そこでカスタムロールの出番です。リソースグループ限定、グループ削除権限なしの共同作成者を作ってみましょう。 いい感じのカスタムロールを作る Azureのカスタムロールは、個別リソースレベルで粒度の細かい権限設定ができます。ですが、やり過ぎると破綻するため、シンプルなロールを最小限作る、がおすすめです。 シンプルに行きましょう。まずはカスタムロールの定義を作ります。role.jsonとします。 { "Name": "Resource Group Contributor", "IsCustom": true, "Description": "Lets you manage everything except access to resources, but can not delete Resouce Group", "Actions": [ "*" ], "NotActions": [ "Microsoft.Authorization/*/Delete", "Microsoft.Authorization/*/Write", "Microsoft.Authorization/elevateAccess/Action", "Microsoft.Resources/subscriptions/resourceGroups/Delete" ], "AssignableScopes": [ "/subscriptions/your-subscriotion-id" ] } 組み込みロールの共同作成者をテンプレに、NotActionsでリソースグループの削除権限を除外しました。AssignableScopesでリソースグループを限定してもいいですが、リソースグループの数だけロールを作るのはつらいので、ここでは指定しません。後からロールを割り当てる時にスコープを指定します。 では、カスタムロールを作成します。 $ az role definition create --role-definition ./role.json 出力にカスタムロールのIDが入っていますので、控えておきます。 "id": "/subscriptions/your-subscriotion-id/providers/Microsoft. Read more

© Copyright 2019 Toru Makabe

Powered by Hugo & Kiss.