Terraform Azure:强制客户端id和Secret?



我有一个简单的地形代码

# Configure the Microsoft Azure provider
provider "azurerm" {
features {}
}
# Create a Resource Group if it doesn’t exist
resource "azurerm_resource_group" "example" {
name     = "example-resources"
location = "West US"
}

当我使用我的用户凭证登录终端时,它曾经工作,但现在它抛出一个错误

│ Error: building AzureRM Client: 3 errors occurred:
│       * A Subscription ID must be configured when authenticating as a Service Principal using a Client Secret.       
│       * A Client ID must be configured when authenticating as a Service Principal using a Client Secret.
│       * A Tenant ID must be configured when authenticating as a Service Principal using a Client Secret.
│
│
│
│   with provider["registry.terraform.io/hashicorp/azurerm"],
│   on main.tf line 2, in provider "azurerm":
│    2: provider "azurerm" {

是什么导致这个问题?由于在活动目录中缺乏权限,我无法创建服务主体。如果没有服务主体,我如何使它再次工作?

当您在本地或CICD上运行时,您必须提供这些subscription_id, tenant_id, client_id和client_secret详细信息。

这些值将验证您的azure帐户,并根据代码创建您想要创建的资源。

以下是认证方法链接:https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/guides/service_principal_client_certificate请务必查看。

在任何组织中,用户都将获得最低权限。如果您正在提供平台活动,您至少需要一个贡献者角色(您可以提供有限的资源)。

另一种方法是你可以使用服务主体详细信息现有的应用程序注册,要求你的管理员添加你的名字作为该应用程序注册的所有者。

你可以要求你的管理员创建一个新的APP注册,并将你的名字添加为APP注册的所有者,要求添加所需的api权限,创建并与你共享client_secret,根据你的需求添加所需的角色到APP注册。

我猜你是从本地PC或虚拟机执行的。这里使用的服务主体是在PC和Azure门户之间进行身份验证。还有其他方法,比如使用托管身份服务。如果您没有SPN,最好是获得SPN。请参阅参考连结:Terraform-Azure认证

你提到它过去是有效的。我认为您正在使用的PC必须配置以下环境变量:

ARM_CLIENT_ID
ARM_CLIENT_SECRET
ARM_SUBSCRIPTION_ID
ARM_TENANT_ID

或者必须有可用的本地配置文件

相关内容

最新更新