はじめに
Azure PolicyをCLIで設定する具体的な手順を解説します。
初めてCLIを使用する方でも操作イメージをつかめる内容です。
そもそもAzureで使用できるCLIは?
Cloud Shlleもありますがローカル環境から使用する場合は以下2つのどちらかになるかと思います。
本記事ではAzure CLIを使用します。
前提
Azure CLIはインストール済みとします。
Azure CLIのバージョンは2.70.0を使用しています。
手順
今回のシナリオケースとして、すべてのAzureリソースには「環境タグ(Environment)」を付けることを運用ルールとする組織があるとします。
このルールを実現するために、Azureポリシーを設定し、タグが付与されていないリソースの作成を防ぎます。
ステップ1: 事前準備
Azureにログインする
以下のコマンドでAzureにログインします
az login
リソースプロバイダーの登録
もし複数のサブスクリプションを管理している場合は以下のコマンドを実行します。作業するサブスクリプションを設定しています。
az account list --output table
az account set --subscription <subscriptionID>
リソースプロバイダーが未登録の場合、CLIを使って登録確認と操作を行います。この手順では、対象のリソースプロバイダーが利用可能であるかを確認し、必要に応じて登録を行います。
リソースプロバイダーとはAzureリソースを操作するための機能です。Azure PortalやCLIなどで各操作するとリソースプロバイダーのAPIを介して実行されます。
# リソースプロバイダーの登録状態確認。StateがRegisteredでない場合は登録が必要
az provider show --namespace Microsoft.PolicyInsights --query "{Provider:namespace,State:registrationState}" --output table
# 登録操作
az provider register --namespace Microsoft.PolicyInsights
リソースグループの作成
適用対象のリソースグループを作成します。には任意のリソースグループ名を入れてください。
az group create --name <resourceGroupName> --location japaneast
リソースグループIDとポリシー定義名の取得
Azure CLIを使って、リソースでタグを必須にするポリシー定義を検索し、そのIDを取得します
ポリシーの表示名をキーとして以下のようにIDを取得します。
# リソースグループIDを取得
az group show --resource-group <resourceGroupName> --query id --output table
# ポリシー定義名を取得
az policy definition list --query "[?contains(displayName, 'Require a tag on resources')].name" -o table
出力結果から対象ポリシーのIDをメモします。
リソースグループIDとポリシー定義名を変数に格納
powershellであれば以下のように変数に格納も可能です
$rgid = az group show --resource-group testGroup --query id --output tsv
$definition = az policy definition list --query "[?displayName=='Require a tag on resources'].name" --output tsv
ステップ2: ポリシーの割り当て
リソースグループにポリシーを割り当てます。
az policy assignment create --name "RequireEnvironmentTag" --scope "<リソースグループID>" --policy "<ポリシー定義名>" --params '{\"tagName\":{\"value\":\"Environment\"}}'
-
<リソースグループID>
には、前ステップで取得したリソースグループIDを指定します -
<ポリシー定義名>
には、前ステップで取得したポリシー定義名を挿入。 - nameは任意のポリシー名を指定します。
- paramsは任意のタグ名を指定します
ステップ3: 動作確認
ポリシーを割り当てたリソースグループにタグの設定を行わずにストレージアカウントを作成してみます。
すると検証に失敗し、タグを付与が必須化されます。
まとめ
Azure CLIを使用してポリシーを設定することで、運用ルールの適用が効率的になります。
例えば、開発環境にタグを付けることで不要なリソースを識別でき、無駄なコストの削減につなげることが可能です。
また、スクリプト化により再利用性することもでき、タグ付けの自動化でリソース管理が簡単になります。
参考