azure - Terraform-Azure:授予组对 azure 资源的访问权限
问题描述
专家们,
我有一种情况,我必须向特定组授予对多个 Azure 资源的访问权限,并且我必须仅使用 Terraform 来执行此操作。示例:Azure 组名称:India-group(该组中有 5-6 个用户) Azure 订阅名称:印度 Azure 资源 SQL 数据库:SQL-db-1 Azure 资源密钥库:India-key-vlt-1 Azure 资源存储帐户:India-acnt-1 以及更多类似 PostgreSQL、存储帐户、blob ......
解决方案
我认为您不需要关心资源组如何访问资源。您需要关心的是如何在必要时访问资源。
通常,我们使用分配包含适当权限的角色的服务主体来访问资源。您可以查看什么是 Azure 资源的基于角色的访问控制 (RBAC)和通过 CLI 创建服务主体。
在 Terraform 中,我假设您想从 KeyVault 中获取机密信息。这是一个例子:
provider "azurerm" {
features {}
}
resource "azuread_application" "example" {
name = "example"
homepage = "http://homepage"
identifier_uris = ["http://uri"]
reply_urls = ["http://replyurl"]
available_to_other_tenants = false
oauth2_allow_implicit_flow = true
}
resource "azuread_service_principal" "example" {
application_id = azuread_application.example.application_id
app_role_assignment_required = false
tags = ["example", "tags", "here"]
}
resource "azurerm_resource_group" "example" {
name = "resourceGroup1"
location = "West US"
}
resource "azurerm_key_vault" "example" {
name = "testvault"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
enabled_for_disk_encryption = true
tenant_id = var.tenant_id
soft_delete_enabled = true
purge_protection_enabled = false
sku_name = "standard"
access_policy {
tenant_id = var.tenant_id
object_id = azuread_service_principal.example.object_id
key_permissions = [
"get",
]
secret_permissions = [
"get",
]
storage_permissions = [
"get",
]
}
network_acls {
default_action = "Deny"
bypass = "AzureServices"
}
tags = {
environment = "Testing"
}
}
然后,您可以访问密钥保管库以通过服务主体获取机密或密钥。您还可以查看通过 python 控制 Key Vault的示例。
对于其他资源,你需要先了解资源本身,然后才能知道如何以合适的方式访问它。最后,您可以使用 Terraform 来实现它。
推荐阅读
- php - 我不断收到以下错误:除以零(php)
- javascript - 如何在 javascript 中向 d3.js 中的非连接对象添加力?
- angular - 如何使用输入装饰器单页从父组件到子组件获取特定 ID
- php - Laravel图像未显示
- java - 如何检查表单是否已打开?
- pandas - 删除未命名索引列的熊猫数据提取的清理输出
- css - 我在 Azure 中部署的 Angular 10 应用程序在刷新时失去了样式
- powershell - 用户在 powershell 命令行中键入命令时是否可以检测箭头键?
- ruby-on-rails - 如何将 Rails ApplicationMailer 配置为使用 API(或 RestClient)而不是 smtp
- r - 使用更长的枢轴来延长多列 R