サービス プリンシパル。 サービス プリンシパル名の構成の状態

サービスプリンシパル(Service Principal)が作れない!

サービス プリンシパル

サービス プリンシパルによる Azure Container Registry 認証 Azure Container Registry authentication with service principals• この記事の内容 Azure Active Directory Azure AD サービス プリンシパルを使って、コンテナー レジストリへのコンテナー イメージの docker push アクセスと pull アクセスを提供できます。 You can use an Azure Active Directory Azure AD service principal to provide container image docker push and pull access to your container registry. サービス プリンシパルを使うことで、「ヘッドレス」のサービスとアプリケーションへのアクセスを提供できます。 By using a service principal, you can provide access to "headless" services and applications. サービス プリンシパルとは What is a service principal? Azure AD の サービス プリンシパルは、サブスクリプション内の Azure リソースへのアクセスを提供します。 Azure AD service principals provide access to Azure resources within your subscription. サービス プリンシパルはサービスのユーザー ID と考えることができます。 ここで "サービス" は、リソースへのアクセスが必要なアプリケーション、サービス、またはプラットフォームです。 You can think of a service principal as a user identity for a service, where "service" is any application, service, or platform that needs to access the resources. 指定したそれらのリソースのみをスコープとするアクセス権を持つサービス プリンシパルを構成できます。 You can configure a service principal with access rights scoped only to those resources you specify. その後、サービス プリンシパルの資格情報を使用してそれらのリソースにアクセスするようにアプリケーションまたはサービスを構成します。 Then, configure your application or service to use the service principal's credentials to access those resources. Azure Container Registry のコンテキストでは、Azure 内のプライベート レジストリに対するプル、プッシュとプル、またはその他のアクセス許可を持つ Azure AD サービス プリンシパルを作成できます。 In the context of Azure Container Registry, you can create an Azure AD service principal with pull, push and pull, or other permissions to your private registry in Azure. 完全な一覧については、に関するページを参照してください。 For a complete list, see. サービス プリンシパルを使う理由 Why use a service principal? Azure AD サービス プリンシパルを使うことで、スコープを設定したプライベート コンテナー レジストリへのアクセスを提供できます。 By using an Azure AD service principal, you can provide scoped access to your private container registry. 各アプリケーションや各サービスに異なるサービス プリンシパルを作成し、それぞれにレジストリへの調整済みのアクセス権を持たせます。 Create different service principals for each of your applications or services, each with tailored access rights to your registry. また、サービスやアプリケーションの間での資格情報の共有を避けることができるため、資格情報を交換したり、選択したサービス プリンシパル および対象とするアプリケーション のみのアクセスを取り消したりできます。 And, because you can avoid sharing credentials between services and applications, you can rotate credentials or revoke access for only the service principal and thus the application you choose. たとえば、イメージの pull アクセスのみを提供するサービス プリンシパルを使用するように Web アプリケーションを構成し、一方でビルド システムでは push と pull 両方のアクセスを提供するサービス プリンシパルを使用します。 For example, configure your web application to use a service principal that provides it with image pull access only, while your build system uses a service principal that provides it with both push and pull access. アプリケーション開発の所有者が変わった場合は、ビルド システムに影響を与えずにそのサービス プリンシパルの資格情報を交換することができます。 If development of your application changes hands, you can rotate its service principal credentials without affecting the build system. サービス プリンシパルを使う場合 When to use a service principal サービス プリンシパルは、 ヘッドレス シナリオでレジストリへのアクセスを提供する際に使う必要があります。 You should use a service principal to provide registry access in headless scenarios. つまり、自動的にまたはそれ以外の無人の方法でコンテナー イメージをプッシュまたはプルする必要があるすべてのアプリケーション、サービス、またはスクリプトが対象です。 That is, any application, service, or script that must push or pull container images in an automated or otherwise unattended manner. 次に例を示します。 For example:• また、コンテナー レジストリから、、、、、 などの関連する Azure サービスにプルすることもできます。 You can also pull from container registries to related Azure services such as , , , , , and others. Push: コンテナー イメージを作成し、継続的インテグレーションと Azure Pipelines や Jenkins などのデプロイ ソリューションを使用してレジストリにプッシュします。 Push: Build container images and push them to a registry using continuous integration and deployment solutions like Azure Pipelines or Jenkins. コンテナー イメージを開発用ワークステーションに手動でプルするときなど、レジストリへの個別アクセスでは、代わりに各自の を使ってレジストリにアクセスすることをお勧めします を使うなど。 For individual access to a registry, such as when you manually pull a container image to your development workstation, we recommend using your own instead for registry access for example, with. サービス プリンシパルの作成 Create a service principal コンテナー レジストリへのアクセス権を持つサービス プリンシパルを作成するには、 または のローカル インストールで、次のスクリプトを実行します。 To create a service principal with access to your container registry, run the following script in the or a local installation of the. スクリプトは Bash シェル用に書式設定されています。 The script is formatted for the Bash shell. " エラーが発生した場合は、別のサービス プリンシパルの名前を指定します。 " error, specify a different name for the service principal. 別のアクセス許可を付与する場合は、必要に応じて コマンドの --role の値を変更することができます。 You can optionally modify the --role value in the command if you want to grant different permissions. ロールの一覧については、に関するページを参照してください。 For a complete list of roles, see. スクリプトを実行した後、サービス プリンシパルの ID と パスワードを書き留めます。 After you run the script, take note of the service principal's ID and password. その資格情報を作成したら、サービス プリンシパルとして、コンテナー レジストリに対する認証を受けるアプリケーションやサービスを構成できます。 Once you have its credentials, you can configure your applications and services to authenticate to your container registry as the service principal. Default permissions are for docker pull access. To grant registry access to an existing service principal, you must assign a new role to the service principal. 新しいサービス プリンシパルの作成と同様に、特に、プル、プッシュとプル、所有者のアクセスを付与できます。 As with creating a new service principal, you can grant pull, push and pull, and owner access, among others. 異なるレベルのアクセスを付与する場合は、 --role の値を調整します。 Adjust the --role value if you'd like to grant a different level of access. 各バージョンの Azure PowerShell についても同様です。 You can find the preceding sample scripts for Azure CLI on GitHub, as well as versions for Azure PowerShell:• サービス プリンシパルでの認証 Authenticate with the service principal コンテナー レジストリへのアクセスが許可されているサービス プリンシパルがある場合は、"ヘッドレス" サービスおよびアプリケーションにアクセスするための資格情報を構成するか、 docker login コマンドを使用してそれらを入力することができます。 Once you have a service principal that you've granted access to your container registry, you can configure its credentials for access to "headless" services and applications, or enter them using the docker login command. 次の値を使用します。 Use the following values:• ユーザー名 - サービス プリンシパルのアプリケーション ID クライアント ID とも呼ばれます User name - service principal application ID also called client ID• パスワード - サービス プリンシパルのパスワード クライアント シークレットとも呼ばれます Password - service principal password also called client secret 各値は、 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx という形式の GUID です。 Each value is a GUID of the form xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. ヒント コマンドを実行することで、サービス プリンシパルのパスワードを再生成できます。 You can regenerate the password of a service principal by running the command. Azure サービスで資格情報を使用する Use credentials with Azure services サービス プリンシパルの資格情報は、Azure コンテナー レジストリに対して認証を行うあらゆる Azure サービスから使用できます。 You can use service principal credentials from any Azure service that authenticates with an Azure container registry. さまざまなシナリオで、レジストリの管理者の資格情報の代わりにサービス プリンシパルの資格情報を使用します。 Use service principal credentials in place of the registry's admin credentials for a variety of scenarios. たとえば、その資格情報を使用して Azure コンテナー レジストリから にイメージをプルします。 For example, use the credentials to pull an image from an Azure container registry to. Docker ログインで使用する Use with docker login サービス プリンシパルを使用して docker login を実行できます。 You can run docker login using a service principal. Docker 資格情報の管理のベスト プラクティスについては、 コマンドのリファレンスを参照してください。 For best practices to manage Docker credentials, see the command reference. Log in to Docker with service principal credentials docker login myregistry. azurecr. Once logged in, Docker caches the credentials. 証明書と共に使用する Use with certificate サービス プリンシパルに証明書を追加した場合は、証明書ベースの認証を使用して Azure CLI にサインインし、 コマンドを使用してレジストリにアクセスできます。 If you've added a certificate to your service principal, you can sign into the Azure CLI with certificate-based authentication, and then use the command to access a registry. パスワードの代わりに証明書をシークレットとして使用すると、CLI を使用するときのセキュリティが強化されます。 Using a certificate as a secret instead of a password provides additional security when you use the CLI. するときに、自己署名証明書を作成できます。 A self-signed certificate can be created when you. または、既存のサービス プリンシパルに 1 つ以上の証明書を追加します。 Or, add one or more certificates to an existing service principal. たとえば、この記事のスクリプトの 1 つを使用して、レジストリからイメージをプルまたはプッシュする権限を持つサービス プリンシパルを作成または更新する場合は、 コマンドを使用して証明書を追加します。 For example, if you use one of the scripts in this article to create or update a service principal with rights to pull or push images from a registry, add a certificate using the command. 証明書と共にサービス プリンシパルを使用して にサインインするには、証明書を PEM 形式にして、秘密キーを含める必要があります。 To use the service principal with certificate to , the certificate must be in PEM format and include the private key. 証明書が必要な形式ではない場合は、 openssl などのツールを使用して変換します。 If your certificate isn't in the required format, use a tool such as openssl to convert it. を実行し、サービス プリンシパルを使用して CLI にサインインする場合は、サービス プリンシパルのアプリケーション ID と Active Directory テナント ID も指定します。 When you run to sign into the CLI using the service principal, also provide the service principal's application ID and the Active Directory tenant ID. これらの値を環境変数として指定する例を次に示します。 Then, run to authenticate with the registry: az acr login --name myregistry CLI では、 az login を実行したときに作成されたトークンが使用され、セッションがレジストリによる認証を受けます。 The CLI uses the token created when you ran az login to authenticate your session with the registry. 次のステップ Next steps• Azure コンテナー レジストリによる認証を受けるその他のシナリオについては、に関する記事を参照してください。 See the for other scenarios to authenticate with an Azure container registry. Azure キー コンテナーを使用してコンテナー レジストリのサービス プリンシパルの資格情報を格納および取得する例については、に関するチュートリアルを参照してください。 For an example of using an Azure key vault to store and retrieve service principal credentials for a container registry, see the tutorial to. 関連記事.

次の

サービス プリンシパルとロールの生成

サービス プリンシパル

Azure サービスを使用した Az モジュール認証から、実際のリソース操作まで順を追って説明。 単純な Az モジュールを使用したリソース操作については以下を参照。 前提条件 認証に使用するサービスは作成済みであること。 サービスの作成方法は以下を参照。 今回は以下のように、TestSP3 と言う名称で作成済みのサービスを使用する。 操作対象のリソースは、こちらもあらかじめ作成済みの下記 Web App とする。 基本情報 種別 値 名 BizSpark リソースグループ名 TestRg Web App 名 NetWebAppTest111 操作対象リソースのロール割当状況 認証に使用したサービスアカウントが、操作対象リソースのロールに割り当てられていること。 ここでは「共同作成者」としてロール割り当て済み。 自体にロールが割り当てられたサービスの場合、当該配下の各リソースも自動的に継承するようだが、基本的には最小限の権限設定となるように、対象リソースにのみロールを割り当てるのが良いと思われる。 上述したイメージでは、にのみロールを割り当てた TestSP1 と TestSP2 も、当該 Web App のロール一覧に表示されている なので、TestSP1, TestSP2 を使用しての操作ももちろん可能。 リソースへのロール割り当て方法については以下も参照。 Management. Automation. ここでは、稼働中 Web App の情報を取得し、停止させることにする。 サービスを利用した認証については、下記ドキュメントも参照。 実行結果 停止コマンドが成功すると、State が Running から Stopped に変わったことが確認できる。 更新結果は Azure ポータルでも確認できるが、Azure がキャッシュ(?)しているのか、F5 で画面リフレッシュしないとポータル上の状態表示が変わらないことがあるっぽいので、注意。 Az コマンド実行時に発生する可能性があるエラーについて ログインに使用したサービスがどのリソースにもロール割り当てされていない場合、ログイン後に表示される名が空になっていて、もちろんリソースの操作もできない。 の他のリソースにロールが割り当てられていて、操作したいリソースに割り当てられていない場合も、以下のようにエラーが発生してリソース操作できない。 なおこの際、「does not have authorization to perform action '. 」と言うように当該コマンドレット実行に必要な権限情報が表示されるので、最小限の権限はこの権限となる。 例えば、「閲覧者(=Reader 組み込みロール)」だと Get-AzWebApp コマンドレットは実行出来るが、Start-AzWebApp コマンドレットは実行出来なかったりする。

次の

3分でわかるAzureでのService Principal

サービス プリンシパル

Create an Azure service principal with Azure PowerShell• 読み終わるまで 6 分• この記事の内容 Automated tools that use Azure services should always have restricted permissions. Instead of having applications sign in as a fully privileged user, Azure offers service principals. An Azure service principal is an identity created for use with applications, hosted services, and automated tools to access Azure resources. This access is restricted by the roles assigned to the service principal, giving you control over which resources can be accessed and at which level. For security reasons, it's always recommended to use service principals with automated tools rather than allowing them to log in with a user identity. This article shows you the steps for creating, getting information about, and resetting a service principal with Azure PowerShell. Create a service principal Create a service principal with the cmdlet. When creating a service principal, you choose the type of sign-in authentication it uses. Note If your account doesn't have permission to create a service principal, New-AzADServicePrincipal will return an error message containing "Insufficient privileges to complete the operation". Contact your Azure Active Directory admin to create a service principal. There are two types of authentication available for service principals: Password-based authentication, and certificate-based authentication. Password-based authentication Important The default role for a password-based authentication service principal is Contributor. This role has full permissions to read and write to an Azure account. For information on managing role assignments, see. Without any other authentication parameters, password-based authentication is used and a random password created for you. If you want password-based authentication, this method is recommended. Make sure that you store this value somewhere secure to authenticate with the service principal. Its value won't be displayed in the console output. If you lose the password,. Runtime. InteropServices. Runtime. InteropServices. Azure. Commands. ActiveDirectory. PSADPasswordCredential objects. These objects must have a valid StartDate and EndDate, and take a plaintext Password. When creating a password, make sure you follow the. Don't use a weak password or reuse a password. Import-Module -Name Az. Azure. Commands. ActiveDirectory. Important Signing in with a service principal requires the tenant ID which the service principal was created under. To get the active tenant when the service principal was created, run the following command immediately after service principal creation: Get-AzContext. Tenant. Id Certificate-based authentication Important There is no default role assigned when creating a certificate-based authentication service principal. For information on managing role assignments, see. Service principals using certificate-based authentication are created with the -CertValue parameter. This parameter takes a base64-encoded ASCII string of the public certificate. This is represented by a PEM file, or a text-encoded CRT or CER. Binary encodings of the public certificate aren't supported. These instructions assume that you already have a certificate available. These objects must have a valid StartDate, EndDate, and have the CertValue member set to a base64-encoded ASCII string of the public certificate. Azure. Commands. ActiveDirectory. Clients which sign in with the service principal also need access to the certificate's private key. Important Signing in with a service principal requires the tenant ID which the service principal was created under. To get the active tenant when the service principal was created, run the following command immediately after service principal creation: Get-AzContext. Tenant. Id Get an existing service principal A list of service principals for the active tenant can be retrieved with. By default this command returns all service principals in a tenant. For large organizations, it may take a long time to return results. Instead, using one of the optional server-side filtering arguments is recommended:• -DisplayNameBeginsWith requests service principals that have a prefix that match the provided value. The display name of a service principal is the value set with -DisplayName during creation. -DisplayName requests an exact match of a service principal name. Manage service principal roles Azure PowerShell has the following cmdlets to manage role assignments:• The default role for a password-based authentication service principal is Contributor. This role has full permissions to read and write to an Azure account. The Reader role is more restrictive, with read-only access. For more information on Role-Based Access Control RBAC and roles, see. This example adds the Reader role and removes the Contributor one: New-AzRoleAssignment -ApplicationId -RoleDefinitionName 'Reader' Remove-AzRoleAssignment -ObjectId -RoleDefinitionName 'Contributor' Note If your account doesn't have permission to assign a role, you see an error message that your account "does not have authorization to perform action 'Microsoft. Contact your Azure Active Directory admin to manage roles. Adding a role doesn't restrict previously assigned permissions. When restricting a service principal's permissions, the Contributor role should be removed. The changes can be verified by listing the assigned roles: Get-AzRoleAssignment -ServicePrincipalName ServicePrincipalName Sign in using a service principal Test the new service principal's credentials and permissions by signing in. To sign in with a service principal, you need the applicationId value associated with it, and the tenant it was created under. Connect-AzAccount -ServicePrincipal -Tenant -CertificateThumbprint For instructions on importing a certificate into a credential store accessible by PowerShell, see Reset credentials If you forget the credentials for a service principal, use to add a new credential with a random password. This cmdlet does not support user-defined credentials when resetting the password. Important Before assigning any new credentials, you may want to remove existing credentials to prevent sign in with them. ", verify that a service principal with the same name doesn't already exist. Get-AzAdServicePrincipal -DisplayName ServicePrincipalName If the existing service principal is no longer needed, you can remove it using the following example. Remove-AzAdServicePrincipal -DisplayName ServicePrincipalName This error can also occur when you've previously created a service principal for an Azure Active Directory application. If you remove the service principal, the application is still available. This application prevents you from creating another service principal with the same name. You can use the following example to verify that an Azure Active Directory application with the same name doesn't exist: Get-AzADApplication -DisplayName ServicePrincipalName If an application with the same name does exist and is no longer needed, it can be removed using the following example. Remove-AzADApplication -DisplayName ServicePrincipalName Otherwise, choose an alternate name for the new service principal that you're attempting to create. 関連記事.

次の