Azure CLI を使用してサインインする

Azure コマンド ライン インターフェイス (CLI) には認証の種類が複数ありますが、どのようにログインしますか。 Azure Cloud Shell を使用すると自動的にログインできるため、最も簡単に作業を開始できます。 ローカルでは、ご使用のブラウザーで az login コマンドを使用して、対話形式でサインインできます。 スクリプトを記述するときは、サービス プリンシパルを使用することをお勧めします。 サービス プリンシパルに必要とされる適切なアクセス許可だけを付与することによって、自動化をより安全に維持できます。

ログイン情報が Azure CLI によって格納されることは一切ありません。 代わりに、認証更新トークンが Azure によって生成され、保存されます。 2018 年 8 月の時点で、このトークンは非アクティブな状態が 90 日続くと取り消されますが、この値は、Microsoft またはテナント管理者が変更できます。 トークンが取り消されると、もう一度ログインする必要があることが CLI からメッセージで通知されます。

サインインすると、CLI コマンドが既定のサブスクリプションに対して実行されます。 複数のサブスクリプションがある場合は、既定のサブスクリプションを変更できます。

対話操作でサインインする

Azure CLI のログインのための既定の認証方法では、サインインに Web ブラウザーとアクセス トークンを使用します。

  1. login コマンドを実行します。

    az login
    

    CLI で既定のブラウザーを開くことができる場合、開いたブラウザに Azure サインイン ページが読み込まれます。

    それ以外の場合は、https://aka.ms/devicelogin でブラウザー ページを開き、ターミナルに表示されている認証コードを入力します。

    Web ブラウザーが使用できないか、Web ブラウザーを開けない場合は、az login --use-device-code でデバイス コード フローを使用します。

  2. ブラウザーでアカウントの資格情報を使用してサインインします。

コマンド ラインで資格情報を使用してサインインする

コマンド ラインで、Azure ユーザー資格情報を指定します。

注意

この方法は、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 として、サービス プリンシパルに関連付けられているテナント

注意

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 を使用したサインインに関するページをご覧ください。