如何:生成新的 Microsoft Entra ID 应用程序和 Service Principal

了解如何生成Microsoft Entra ID并将其用作Service Principal

前期准备

  • Azure 订阅
  • Azure CLI
  • jq
  • OpenSSL(默认包含在所有 Linux 和 macOS 系统以及 WSL 上)
  • 确保您正在使用 bash 或 zsh shell

使用 Azure CLI 登录到 Azure

在一个新的终端中,运行以下命令:

  1. az login
  2. az account set -s [your subscription id]

创建 Microsoft Entra ID 应用程序

使用以下命令创建 Microsoft Entra ID 应用程序:

  1. # Friendly name for the application / Service Principal
  2. APP_NAME="dapr-application"
  3. # Create the app
  4. APP_ID=$(az ad app create --display-name "${APP_NAME}" | jq -r .appId)

选择您更喜欢的凭据传递方式。

要创建一个客户端密钥,请运行以下命令。

  1. az ad app credential reset \
  2. --id "${APP_ID}" \
  3. --years 2

这将基于base64字符集生成一个随机的40个字符长的密码。 此密码将在2年后过期,请在此之前进行更换。

保存返回的输出值;您将需要它们来使 Dapr 与 Azure 进行身份验证。 预期输出:

  1. {
  2. "appId": "<your-app-id>",
  3. "password": "<your-password>",
  4. "tenant": "<your-azure-tenant>"
  5. }

将返回的值添加到您的 Dapr 组件的元数据中:

  • appIdazureClientId 的值
  • passwordazureClientSecret 的值 (这是随机生成的)
  • tenantazureTenantId 的值

For a PFX (PKCS#12) certificate, run the following command to create a self-signed certificate:

  1. az ad app credential reset \
  2. --id "${APP_ID}" \
  3. --create-cert

**注意:**仅建议将自签名证书用于开发。 对于生产环境,应使用由 CA 签名并使用 --cert 标志导入的证书。

上述命令的输出应如下所示:

保存返回的输出值;您将需要它们来使 Dapr 与 Azure 进行身份验证。 预期输出:

  1. {
  2. "appId": "<your-app-id>",
  3. "fileWithCertAndPrivateKey": "<file-path>",
  4. "password": null,
  5. "tenant": "<your-azure-tenant>"
  6. }

将返回的值添加到您的 Dapr 组件的元数据中:

  • appIdazureClientId 的值
  • tenantazureTenantId 的值
  • fileWithCertAndPrivateKey指示自签名PFX证书和私钥的位置。 将该文件的内容用作azureCertificate(或将其写入服务器上的文件并使用azureCertificateFile

注意: 虽然生成的文件有 .pem 扩展名,但它包含了一个编码为PFX(PKCS#12)的证书和私钥。

创建一个 Service Principal

一旦您创建了一个Microsoft Entra ID应用程序,请为该应用程序创建一个Service Principal。 通过这个 Service Principal,您可以授予它访问Azure资源的权限。

要创建Service Principal,请运行以下命令:

  1. SERVICE_PRINCIPAL_ID=$(az ad sp create \
  2. --id "${APP_ID}" \
  3. | jq -r .id)
  4. echo "Service Principal ID: ${SERVICE_PRINCIPAL_ID}"

预期输出:

  1. Service Principal ID: 1d0ccf05-5427-4b5e-8eb4-005ac5f9f163

上面返回的值是Service Principal ID,它与Microsoft Entra ID 应用程序 ID(客户端ID)不同。 Service Principal ID在Azure租户中定义,并用于向应用程序授予访问Azure资源的权限 您将使用Service Principal ID来授予应用程序访问Azure资源的权限。

同时,客户端ID被你的应用程序用来验证。 您将在 Dapr 清单中使用客户端 ID 来配置与 Azure 服务的身份验证。

请记住,默认情况下,刚创建的服务主体无权访问任何 Azure 资源。 需要根据需要授予对每个资源的访问权限,如组件的文档中所述。

下一步

使用托管身份 >>