次の方法で共有


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

Azure PowerShell では、いくつかの認証方法がサポートされています。 最も簡単な方法は、自動的にログインする Azure Cloud Shell を使用することです。 ローカル インストールを使用すると、ブラウザーを使用して対話形式でサインインできます。 自動化用のスクリプトを記述する場合は、必要なアクセス許可を持つ サービス プリンシパル を使用することをお勧めします。 ユース ケースに対してサインインアクセス許可を可能な限り制限すると、Azure リソースのセキュリティを維持するのに役立ちます。

サインインすると、既定のサブスクリプションに対してコマンドが実行されます。 セッションのアクティブなサブスクリプションを変更するには、 Set-AzContext コマンドレットを使用します。 Azure PowerShell でログインするときに使用する既定のサブスクリプションを変更するには、 Set-AzDefault を使用します

重要

サインインしたままであれば、資格情報は複数の PowerShell セッション間で共有されます。 詳細については、 永続的な資格情報に関する記事を参照してください。

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

対話形式でサインインするには、 Connect-AzAccount コマンドレットを使用します。

Connect-AzAccount

このコマンドレットを実行すると、トークン文字列が表示されます。 サインインするには、この文字列をコピーし、ブラウザーの https://microsoft.com/devicelogin に貼り付けます。 PowerShell セッションは、Azure に接続するために認証されます。

重要

Active Directory 承認の実装とセキュリティ上の問題の変更により、Azure PowerShell でユーザー名とパスワードの資格情報の承認が削除されました。 自動化のために資格情報の承認を使用する場合は、代わりに サービス プリンシパルを作成します

サービス プリンシパルを使用してサインインする

サービス プリンシパルは非対話型の Azure アカウントです。 他のユーザー アカウントと同様に、アクセス許可は Microsoft Entra ID で管理されます。 サービス プリンシパルに、必要なアクセス許可のみを付与することで、自動化スクリプトのセキュリティが維持されます。

Azure PowerShell で使用するサービス プリンシパルを作成する方法については、「Azure PowerShell を使用 して Azure サービス プリンシパルを作成する」を参照してください。

サービス プリンシパルを使用してサインインするには、-ServicePrincipal コマンドレットで Connect-AzAccount 引数を使用します。 また、サービス プリンシパルのアプリケーション ID、サインイン資格情報、およびサービス プリンシパルに関連付けるテナント ID も必要です。 サービス プリンシパルを使用してサインインする方法は、パスワードベースの認証と証明書ベースの認証のどちらで構成されているかによって異なります。

パスワードベースの認証

サービス プリンシパルの資格情報を適切なオブジェクトとして取得するには、 Get-Credential コマンドレットを使用します。 このコマンドレットは、ユーザー名とパスワードの入力を求めるプロンプトを表示します。 ユーザー名にサービス プリンシパル ID を使用します。

$pscredential = Get-Credential
Connect-AzAccount -ServicePrincipal -Credential $pscredential -Tenant $tenantId

自動化シナリオでは、ユーザー名とセキュリティで保護された文字列から資格情報を作成する必要があります。

$passwd = ConvertTo-SecureString <use a secure password here> -AsPlainText -Force
$pscredential = New-Object System.Management.Automation.PSCredential('service principal name/id', $passwd)
Connect-AzAccount -ServicePrincipal -Credential $pscredential -Tenant $tenantId

サービス プリンシパル接続を自動化するときは、適切なパスワード ストレージプラクティスを使用してください。

証明書ベースの認証

証明書ベースの認証では、Azure PowerShell が証明書の拇印に基づいてローカル証明書ストアから情報を取得できる必要があります。

Connect-AzAccount -ApplicationId $appId -Tenant $tenantId -CertificateThumbprint <thumbprint>

登録済みアプリケーションではなくサービス プリンシパルを使用する場合は、 -ServicePrincipal 引数を追加し、 -ApplicationId パラメーターの値としてサービス プリンシパルのアプリケーション ID を指定します。

Connect-AzAccount -ServicePrincipal -ApplicationId $servicePrincipalId -Tenant $tenantId -CertificateThumbprint <thumbprint>

PowerShell 5.1 では、 PKI モジュールを使用して証明書ストアを管理および検査できます。 PowerShell Core 6.x 以降の場合、プロセスはより複雑になります。 次のスクリプトは、PowerShell からアクセスできる証明書ストアに既存の証明書をインポートする方法を示しています。

PowerShell 5.1 で証明書をインポートする

# Import a PFX
$credentials = Get-Credential -Message "Provide PFX private key password"
Import-PfxCertificate -FilePath <path to certificate> -Password $credentials.Password -CertStoreLocation cert:\CurrentUser\My

PowerShell Core 6.x 以降で証明書をインポートする

# Import a PFX
$storeName = [System.Security.Cryptography.X509Certificates.StoreName]::My
$storeLocation = [System.Security.Cryptography.X509Certificates.StoreLocation]::CurrentUser
$store = [System.Security.Cryptography.X509Certificates.X509Store]::new($storeName, $storeLocation)
$certPath = <path to certificate>
$credentials = Get-Credential -Message "Provide PFX private key password"
$flag = [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::Exportable
$certificate = [System.Security.Cryptography.X509Certificates.X509Certificate2]::new($certPath, $credentials.Password, $flag)
$store.Open([System.Security.Cryptography.X509Certificates.OpenFlags]::ReadWrite)
$store.Add($Certificate)
$store.Close()

マネージド ID を使用してサインインする

マネージド ID は、Microsoft Entra ID の機能です。 マネージド ID は、Azure で実行されるリソースに割り当てられたサービス プリンシパルです。 サインインにはマネージド ID サービス プリンシパルを使用し、アプリ専用アクセス トークンを取得して他のリソースにアクセスできます。 マネージド ID は、Azure クラウドで実行されているリソースでのみ使用できます。

このコマンドは、ホスト環境のマネージド ID を使用して接続します。 たとえば、割り当てられたマネージド サービス ID を持つ VirtualMachine で実行された場合、割り当てられた ID を使用してコードをサインインできます。

 Connect-AzAccount -Identity

既定以外のテナントまたはクラウド ソリューション プロバイダー (CSP) としてサインインする

アカウントが複数のテナントに関連付けられている場合、サインインには接続時に -Tenant パラメーターを使用する必要があります。 このパラメーターは、任意のサインイン 方法で動作します。 ログイン時に、このパラメーター値には、テナントの Azure オブジェクト ID (テナント ID) またはテナントの完全修飾ドメイン名を指定できます。

クラウド ソリューション プロバイダー (CSP) の場合、-Tenant値はテナント ID である必要があります

Connect-AzAccount -Tenant 'xxxx-xxxx-xxxx-xxxx'

別のクラウドにサインインする

Azure クラウド サービスは、地域のデータ処理に関する法律に準拠した環境を提供します。 リージョン クラウドのアカウントの場合は、 -Environment 引数を使用してサインインするときに環境を設定します。 このパラメーターは、任意のサインイン 方法で動作します。 たとえば、アカウントが中国クラウドにある場合は、次のようになります。

Connect-AzAccount -Environment AzureChinaCloud

次のコマンドは、使用可能な環境の一覧を取得します。

Get-AzEnvironment | Select-Object Name