Azure CLI を使用してサインインする
Azure コマンド ライン インターフェイス (CLI) には認証の種類が複数ありますが、どのようにログインしますか。 Azure Cloud Shell を使用すると自動的にログインできるため、最も簡単に作業を開始できます。 ローカルでは、ご使用のブラウザーで az login コマンドを使用して、対話形式でサインインできます。 スクリプトを記述するときは、サービス プリンシパルを使用することをお勧めします。 サービス プリンシパルに必要とされる適切なアクセス許可だけを付与することによって、自動化をより安全に維持できます。
ログイン情報が Azure CLI によって格納されることは一切ありません。 代わりに、認証更新トークンが Azure によって生成され、保存されます。 2018 年 8 月の時点で、このトークンは非アクティブな状態が 90 日続くと取り消されますが、この値は、Microsoft またはテナント管理者が変更できます。 トークンが取り消されると、もう一度ログインする必要があることが CLI からメッセージで通知されます。
サインインすると、CLI コマンドが既定のサブスクリプションに対して実行されます。 複数のサブスクリプションがある場合は、既定のサブスクリプションを変更できます。
Note
サインイン方法によっては、テナントに、特定のリソースへのアクセスを制限する条件付きアクセス ポリシーが設定されている場合があります。
対話操作でサインインする
Azure CLI のログインのための既定の認証方法では、サインインに Web ブラウザーとアクセス トークンを使用します。
login
コマンドを実行します。az login
CLI で既定のブラウザーを開くことができる場合は、認可コード フローが開始され、既定のブラウザーが開いて Azure サインイン ページが読み込まれます。
それ以外の場合は、デバイス コード フローが開始され、ブラウザー ページ https://aka.ms/devicelogin 開いて、ターミナルに表示されるコードを入力するように指示されます。
Web ブラウザーが使用できないか、Web ブラウザーを開けない場合は、az login --use-device-code を使用してデバイス コード フローを強制できします。
ブラウザーでアカウントの資格情報を使用してサインインします。
コマンド ラインで資格情報を使用してサインインする
コマンド ラインで、Azure ユーザー資格情報を指定します。
Note
この方法は、Microsoft アカウント、または 2 要素認証が有効になっているアカウントでは機能しません。
az login -u <username> -p <password>
重要
az login
を対話形式で使用しているときに、コンソールにパスワードが表示されないようにするには、bash
では read -s
コマンドを使用します。
read -sp "Azure password: " AZ_PASS && echo && az login -u <username> -p $AZ_PASS
PowerShell では、Get-Credential
コマンドレットを使用します。
$AzCred = Get-Credential -UserName <username>
az login -u $AzCred.UserName -p $AzCred.GetNetworkCredential().Password
サービス プリンシパルを使ってサインインする
サービス プリンシパルは、特定のユーザーに関連付けられていないアカウントであり、定義済みのロールによってアクセス許可を割り当てることができます。 サービス プリンシパルを使用した認証は、セキュリティで保護されたスクリプトやプログラムを記述するのに最適な方法で、アクセス許可の制限と、ローカルに保存された静的な資格情報の両方を適用できます。 サービス プリンシパルの詳細については、Azure CLI を使用した Azure サービス プリンシパルの作成に関するページをご覧ください。
サービス プリンシパルを使ってサインインするには、以下が必要です。
- サービス プリンシパルに関連付けられている URL または名前
- サービス プリンシパルのパスワード、またはサービス プリンシパルを PEM 形式で作成するために使用する X509 証明書
.onmicrosoft.com
ドメインまたは Azure オブジェクト ID として、サービス プリンシパルに関連付けられているテナント
Note
PEM ファイル内で PRIVATE KEY (秘密キー) に CERTIFICATE (証明書) を追加する必要があります。 PEM ファイル形式の例については、「証明書ベースの認証」を参照してください。
重要
お使いのサービス プリンシパルでは、Key Vault に格納されている証明書が使用されている場合、その証明書の秘密キーは Azure にサインインしなくても使用できる必要があります。 az login
のための証明書を取得するには、「Key Vault から証明書を取得する」を参照してください。
az login --service-principal -u <app-id> -p <password-or-cert> --tenant <tenant>
重要
az login
を対話形式で使用しているときに、コンソールにパスワードが表示されないようにするには、bash
では read -s
コマンドを使用します。
read -sp "Azure password: " AZ_PASS && echo && az login --service-principal -u <app-id> -p $AZ_PASS --tenant <tenant>
PowerShell では、Get-Credential
コマンドレットを使用します。
$AzCred = Get-Credential -UserName <app-id>
az login --service-principal -u $AzCred.UserName -p $AzCred.GetNetworkCredential().Password --tenant <tenant>
別のテナントでサインインする
--tenant
引数を使用すると、サインインするテナントを選択できます。 この引数の値として、.onmicrosoft.com
ドメインまたはテナントの Azure オブジェクト ID を指定できます。 対話形式のサインイン方法とコマンドラインによるサインイン方法の両方で、--tenant
を使用できます。
az login --tenant <tenant>
マネージド ID を使用したサインイン
Azure リソースのマネージド ID 用に構成されたリソースでは、マネージド ID を使用してサインインできます。 リソースの ID を使用したサインインは、--identity
フラグを介して行われます。
az login --identity
リソースに複数のユーザー割り当てマネージド ID があり、システム割り当て ID がない場合は、ログインで --username
を使用してユーザー割り当てマネージド ID のクライアント ID、オブジェクト ID、またはリソース ID を指定する必要があり ます。
az login --identity --username <client_id|object_id|resource_id>
Azure リソースのマネージド ID の詳細については、Azure リソースのマネージド ID の構成に関するページ、およびAzure リソースのマネージド ID を使用したサインインに関するページをご覧ください。