Azure CLI を使用して Azure サブスクリプションを管理する方法

Azure CLI を使用すると、Azure サブスクリプションの管理、管理グループの作成、サブスクリプションのロックを楽に行うことができます。 Azure 内では複数のサブスクリプションを使用できます。 ユーザーは複数の組織に所属でき、また組織はグループ間で特定のリソースへのアクセスを分割できます。 Azure CLI では、サブスクリプションをグローバルに選択することも、コマンドごとに選択することもできます。

サブスクリプション、請求、およびコスト管理の詳細については、課金とコスト管理に関するドキュメントをご覧ください。

テナント、ユーザー、サブスクリプション

"テナント" とは、組織全体を含む Azure Active Directory エンティティです。 テナントには、1 つ以上の "サブスクリプション""ユーザー" があります。 ユーザーは、Azure にサインインしてリソースを作成、管理、および使用するアカウントです。 ユーザーは複数の "サブスクリプション" にアクセスできる場合がありますが、1 人のユーザーが関連付けられているのは 1 つのテナントのみです。 "サブスクリプション" とは、Azure をはじめとするクラウド サービスを使用するための Microsoft との契約です。 各リソースは、サブスクリプションに関連付けられています。

テナント、ユーザー、サブスクリプションの違いの詳細については、Azure クラウド用語集のページをご覧ください。

アクティブなテナントを取得する

az account tenant list または az account show を使用して、アクティブなテナント ID を取得します。

az account tenant list

az account show

アクティブなテナントを変更する

テナントを切り替えるには、目的のテナント内のユーザーとしてサインインする必要があります。 az login を使用してアクティブなテナントを変更し、所属するサブスクリプションの一覧を更新します。

# sign in as a different user
az login --user <myAlias@myCompany.com> -password <myPassword>

# sign in with a different tenant
az login --tenant <myTenantID>

組織で多要素認証が必要な場合は、az login --user を使用すると、こちらのエラーが発生することがあります。

Due to a configuration change made by your administrator, or because you moved to a new location, you must use multi-factor authentication to access...

代替の az login --tenant コマンドを使用すると、HTTPS ページを開いて指定されたコードを入力するように求められます。 その後、多要素認証を使用して正常にサインインできます。 Azure CLI を使用したサインイン オプションについて詳しくは、「Azure CLI を使用してサインインする」をご覧ください。

アクティブなサブスクリプションを取得する

ほとんどの Azure CLI コマンドは、サブスクリプション内で動作します。 最適なセキュリティを確保するために、Azure CLI コマンドではサブスクリプション ID が現在アクティブなサブスクリプションに既定で設定されなくなりました。 コマンドで --subscription または --scope パラメーターを使用して、どのサブスクリプションを使用するかを指定する必要があります。

現在使用しているサブスクリプションの確認、または使用可能なサブスクリプションの一覧の取得を行うには、az account show または az account list コマンドを実行します。 az account show のその他の使用例については、「Bash を Azure CLI で使用する方法」をご覧ください。

# get the current default subscription using show
az account show --output table

# get the current default subscription using list
az account list --query "[?isDefault]"

# store the default subscription  in a variable
subscriptionId="$(az account list --query "[?isDefault].id" -o tsv)"
echo $subscriptionId

ヒント

--output パラメーターはグローバル パラメーターであり、すべてのコマンドで使用できます。 table 値を指定すると、出力がわかりやすい形式で表示されます。 詳細については、「Azure CLI コマンドの出力形式」をご覧ください。

サブスクリプションにはリソース グループが含まれます。 Azure リソース グループは、Azure ソリューションの関連するリソースを保持するコンテナーです。 サブスクリプション内のリソース グループを管理する方法については、「Azure CLI を使用して Azure リソース グループを管理する方法」をご覧ください。

アクティブなサブスクリプションを変更する

サブスクリプションには、名前と ID の両方があります。 別のサブスクリプションに切り替えるには、目的のサブスクリプション ID または名前を指定して az account set を使用できます。

# change the active subscription using the subscription name
az account set --subscription "My Demos"

# change the active subscription using the subscription ID
az account set --subscription "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

# change the active subscription using a variable
subscriptionId="$(az account list --query "[?isDefault].id" -o tsv)"
az account set --subscription $subscriptionId

az account set コマンドを使用して、アクティブなサブスクリプションを "別のテナント内" のサブスクリプションに変更することはできません。 最初に、目的のテナント内のユーザーとしてサインインする必要があります。 サブスクリプションを別のテナント内のサブスクリプションに設定しようとすると、こちらのエラーが表示されます。

The subscription of 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' doesn't exist in cloud 'AzureCloud'.

Azure Active Directory テナントに新しいサブスクリプションを追加する方法については、「Azure サブスクリプションを Azure Active Directory テナントに関連付けるまたは追加する」をご覧ください。

Azure 管理グループを作成する

Azure 管理グループにはサブスクリプションが含まれます。 管理グループは、それらのサブスクリプションのアクセス、ポリシー、コンプライアンスを管理するための手段を提供します。 詳細については、「Azure 管理グループとは」をご覧ください。

az account management-group コマンドを使用して、Azure 管理グループを作成および管理します。

az account management-group create コマンドを使用して、いくつかのサブスクリプションの管理グループを作成できます。

az account management-group create --name Contoso01

すべての管理グループを表示するには、az account management-group list コマンドを使用します。

az account management-group list

az account management-group subscription add コマンドを使用して、新しいグループにサブスクリプションを追加します。

az account management-group subscription add --name Contoso01 --subscription "My Demos"
az account management-group subscription add --name Contoso01 --subscription "My Second Demos"

サブスクリプションを削除するには、az account management-group subscription remove コマンドを使用します。

az account management-group subscription remove --name Contoso01 --subscription "My Demos"

管理グループを削除するには、az account management-group delete コマンドを実行します。

az account management-group delete --name Contoso01

サブスクリプションを削除しても、あるいは管理グループを削除しても、サブスクリプションは削除も非アクティブ化もされません。

Azure サブスクリプション ロックを設定する

管理者は、ユーザーがサブスクリプションを削除または変更できないようにするために、場合によってサブスクリプションをロックする必要があります。 詳細については、「リソースのロックによる予期せぬ変更の防止」を参照してください。

Azure CLI では、az account lock コマンドを使用します。 たとえば、az account lock create コマンドを実行すると、ユーザーはサブスクリプションを削除できなくなります。

az account lock create --name "Cannot delete subscription" --lock-type CanNotDelete

注意

ロックを作成または変更するには、適切なアクセス許可が必要です。

サブスクリプションの現在のロックを確認するには、az account lock list コマンドを使用します。

az account lock list --output table

アカウントを読み取り専用にすると、結果として、閲覧者ロールのアクセス許可をすべてのユーザーに割り当てた場合と同様になります。 個々のユーザーとロールに対してアクセス許可を設定する方法については、「Azure CLI を使用して Azure でのロールの割り当てを追加または削除する」をご覧ください。

ロックの詳細を確認するには、az account lock show コマンドを使用します。

az account lock show --name "Cannot delete subscription"

ロックを削除するには、az account lock delete コマンドを使用します。

az account lock delete --name "Cannot delete subscription"

参照