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

Azure

サービス プリンシパル

サービス プリンシパルによる 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. 関連記事.

次の

Power BI Embedded のサービス プリンシパルの提供開始

サービス プリンシパル

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 コマンドレットは実行出来なかったりする。

次の

サービス プリンシパルでの認証

サービス プリンシパル

Azure CLI で Azure サービス プリンシパルを作成する Create an Azure service principal with the Azure CLI• この記事の内容 Azure サービスを使用する自動化ツールのアクセス許可は、常に制限されている必要があります。 Automated tools that use Azure services should always have restricted permissions. 完全な特権を持つユーザーとしてアプリケーションをサインインさせる代わりに、Azure にはサービス プリンシパルが用意されています。 Instead of having applications sign in as a fully privileged user, Azure offers service principals. Azure サービス プリンシパルは、Azure リソースにアクセスするアプリケーション、ホステッド サービス、および自動化ツールで使用するために作成される ID です。 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. セキュリティ上の理由から、自動化ツールにはユーザー ID でのログインを許可するのではなく、常にサービス プリンシパルを使用することを推奨します。 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. この記事では、Azure CLI を使用して、サービス プリンシパルの作成、情報取得、およびリセットを行うための手順について説明します。 This article shows you the steps for creating, getting information about, and resetting a service principal with the Azure CLI. サービス プリンシパルの作成 Create a service principal サービス プリンシパルは、 コマンドを使用して作成します。 Create a service principal with the command. サービス プリンシパルを作成する際に、サービス プリンシパルが使用するサインイン認証の種類を選択します。 When creating a service principal, you choose the type of sign-in authentication it uses. 注意 ご利用のアカウントにサービス プリンシパルを作成するためのアクセス許可がない場合は、 az ad sp create-for-rbac から "この操作を完了するのに十分な特権がありません" というエラー メッセージが返されます。 If your account doesn't have permission to create a service principal, az ad sp create-for-rbac will return an error message containing "Insufficient privileges to complete the operation. " サービス プリンシパルを作成するには、Azure Active Directory 管理者にお問い合わせください。 Contact your Azure Active Directory admin to create a service principal. サービス プリンシパルで使用できる認証には、パスワードベースの認証と証明書ベースの認証の 2 種類があります。 There are two types of authentication available for service principals: Password-based authentication, and certificate-based authentication. パスワードベースの認証 Password-based authentication パスワード ベースの認証では、認証パラメーターは使用せず、自動的に作成されるランダム パスワードと共に使用されます。 Without any authentication parameters, password-based authentication is used with a random password created for you. az ad sp create-for-rbac --name ServicePrincipalName 重要 Azure CLI 2. As of Azure CLI 2. 68, the --password parameter to create a service principal with a user-defined password is no longer supported to prevent the accidental use of weak passwords. パスワード認証によるサービス プリンシパルの出力には、 password キーが含まれます。 The output for a service principal with password authentication includes the password key. 取得することはできません。 Make sure you copy this value - it can't be retrieved. パスワードを忘れた場合は、します。 If you forget the password,. appId キーと tenant キーは az ad sp create-for-rbac の出力に表示され、サービス プリンシパルの認証で使用されます。 The appId and tenant keys appear in the output of az ad sp create-for-rbac and are used in service principal authentication. これらの値を記録してください。 ただし、 を使用していつでも取得できます。 Record their values, but they can be retrieved at any point with. 証明書ベースの認証 Certificate-based authentication 証明書ベースの認証の場合は、 --cert 引数を使用します。 For certificate-based authentication, use the --cert argument. この引数を使用するには、既存の証明書を保持しておく必要があります。 This argument requires that you hold an existing certificate. このサービス プリンシパルを使用する任意のツールから、証明書の秘密キーにアクセスできることを確認します。 Make sure any tool that uses this service principal has access to the certificate's private key. 証明書は、PEM、CER、または DER などの ASCII 形式でなければなりません。 Certificates should be in an ASCII format such as PEM, CER, or DER. 文字列として証明書を渡すか、 path 形式を使用してファイルから証明書を読み込みます。 Pass the certificate as a string, or use the path format to load the certificate from a file. 注意 PEM ファイルを使用する場合は、ファイル内で PRIVATE KEY 秘密キー に CERTIFICATE 証明書 を追加する必要があります。 When using a PEM file, the CERTIFICATE must be appended to the PRIVATE KEY within the file. az ad sp create-for-rbac --name ServicePrincipalName --cert "-----BEGIN CERTIFICATE-----... pem --keyvault 引数を追加すると、Azure Key Vault 内の証明書を使用できます。 The --keyvault argument can be added to use a certificate in Azure Key Vault. ここでは、 --cert 値は証明書の名前を表します。 In this case, the --cert value is the name of the certificate. az ad sp create-for-rbac --name ServicePrincipalName --cert CertName --keyvault VaultName 認証用の " 自己署名" 証明書を作成するには、 --create-cert 引数を使用します。 pem to a safe place. The az ad sp create-for-rbac --create-cert command creates the service principal and a PEM file. PEM ファイルには、正しく書式設定された PRIVATE KEY 秘密キー と CERTIFICATE 証明書 が含まれます。 The PEM file contains a correctly formatted PRIVATE KEY and CERTIFICATE. --keyvault 引数を追加すると、証明書を Azure Key Vault に格納できます。 The --keyvault argument can be added to store the certificate in Azure Key Vault. When using --keyvault, the --cert argument is required. az ad sp create-for-rbac --name ServicePrincipalName --create-cert --cert CertName --keyvault VaultName 証明書を Key Vault に格納しない場合は、出力に fileWithCertAndPrivateKey キーが含まれています。 Unless you store the certificate in Key Vault, the output includes the fileWithCertAndPrivateKey key. このキーの値を見ると、生成された証明書の格納場所がわかります。 This key's value tells you where the generated certificate is stored. そうしないと、このサービス プリンシパルでサインインすることができません。 Make sure that you copy the certificate to a secure location, or you can't sign in with this service principal. Key Vault に格納されている証明書の場合、 を使用して証明書の秘密キーを取得します。 For certificates stored in Key Vault, retrieve the certificate's private key with. Key Vault では、証明書のシークレットの名前は、証明書の名前と同じです。 In Key Vault, the name of the certificate's secret is the same as the certificate name. 証明書の秘密キーにアクセスできない場合は、します。 If you lose access to a certificate's private key,. appId キーと tenant キーは az ad sp create-for-rbac の出力に表示され、サービス プリンシパルの認証で使用されます。 The appId and tenant keys appear in the output of az ad sp create-for-rbac and are used in service principal authentication. これらの値を記録してください。 ただし、 を使用していつでも取得できます。 Record their values, but they can be retrieved at any point with. 既存のサービス プリンシパルの取得 Get an existing service principal を使用して、テナント内のサービス プリンシパルの一覧を取得できます。 A list of the service principals in a tenant can be retrieved with. 既定では、このコマンドによって、テナントの最初の 100 個のサービス プリンシパルが返されます。 By default this command returns the first 100 service principals for your tenant. テナントのサービス プリンシパルをすべて取得するには、 --all 引数を使用します。 To get all of a tenant's service principals, use the --all argument. この一覧の取得には時間がかかる場合があるため、次の引数のいずれかを使用して一覧をフィルター処理することをお勧めします。 Getting this list can take a long time, so it's recommended that you filter the list with one of the following arguments:• --display-name は、指定した名前に一致する " プレフィックス" を持つサービス プリンシパルを要求します。 --display-name requests service principals that have a prefix that match the provided name. サービス プリンシパルの表示名は、作成時に --name パラメーターで設定した値です。 The display name of a service principal is the value set with the --name parameter during creation. サービス プリンシパルの作成時に --name を設定していない場合、名前のプレフィックスは azure-cli- になります。 If you didn't set --name during service principal creation, the name prefix is azure-cli-. --spn は、正確に一致するサービス プリンシパル名でフィルター処理します。 --spn filters on exact service principal name matching. --show-mine は、サインインしているユーザーによって作成されたサービス プリンシパルのみを要求します。 --show-mine requests only service principals created by the signed-in user. --filter は OData フィルターを使用して、" サーバー側" のフィルター処理を実行します。 --filter takes an OData filter, and performs server-side filtering. この方法は、CLI の --query 引数を使用したクライアント側のフィルター処理よりも推奨されます。 This method is recommended over filtering client-side with the CLI's --query argument. OData フィルターの詳細については、に関するページをご覧ください。 To learn about OData filters, see. サービス プリンシパル オブジェクトについて返される情報は、詳細情報です。 The information returned for service principal objects is verbose. サインインに必要な情報のみを取得するには、クエリ文字列 []. To get only the information necessary for sign-in, use the query string []. たとえば、現在ログインしているユーザーによって作成されたすべてのサービス プリンシパルのサインイン情報を取得するには、次のコマンドを使用します。 For example, to get the sign-in information for all service principals created by the currently logged in user: az ad sp list --show-mine --query "[]. az ad sp list or get the user and tenant, but not any authentication secrets or the authentication method. Key Vault 内の証明書のシークレットは を使用して取得できますが、既定では、それ以外のシークレットは保存されません。 Secrets for certificates in Key Vault can be retrieved with , but no other secrets are stored by default. 認証方法やシークレットを忘れた場合は、します。 If you forget an authentication method or secret,. サービス プリンシパル ロールを管理する Manage service principal roles Azure CLI には、ロールの割り当てを管理するために、次のコマンドが用意されています。 The Azure CLI has the following commands to manage role assignments:• サービス プリンシパルの既定のロールは 共同作成者です。 The default role for a service principal is Contributor. このロールには、Azure アカウントの読み取りと書き込みを行うための完全なアクセス許可が付与されます。 This role has full permissions to read and write to an Azure account. 閲覧者ロールは制限がより厳しく、読み取り専用アクセスが提供されます。 The Reader role is more restrictive, with read-only access. ロールベースのアクセス制御 RBAC とロールの詳細については、に関するページをご覧ください。 For more information on Role-Based Access Control RBAC and roles, see. この例では、 閲覧者ロールを追加し、 共同作成者ロールを削除します。 ロールを管理するには、Azure Active Directory 管理者にお問い合わせください。 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. 変更を確認するには、割り当てられているロールの一覧を表示します。 Test the new service principal's credentials and permissions by signing in. サービス プリンシパルでサインインするには、 appId、 tenant、および資格情報が必要です。 To sign in with a service prinicpal, you need the appId, tenant, and credentials. パスワードを使用してサービス プリンシパルでサインインするには、次のコマンドを使用します。 To sign in with a certificate, it must be available locally as a PEM or DER file, in ASCII format. PEM ファイルを使用する場合は、ファイル内に PRIVATE KEY 秘密キー と CERTIFICATE 証明書 を共に追加する必要があります。 When using a PEM file, the PRIVATE KEY and CERTIFICATE must be appended together within the file. To learn more about signing in with a service principal, see. 資格情報をリセットする Reset credentials サービス プリンシパルの資格情報を忘れた場合は、 を使用します。 If you forget the credentials for a service principal, use. リセット コマンドでは、 az ad sp create-for-rbac と同じ引数を使用します。 The reset command takes the same arguments as az ad sp create-for-rbac.

次の