如何通过Terraform配置Azure Cognitive Search的RBAC API访问控制?
Azure Cognitive Search数据平面RBAC预览版的Terraform配置方案
1. 订阅级启用RBAC预览功能
首先需要通过Terraform启用订阅层面的Microsoft.Search/enableRBACPreview预览特性,代码如下:
resource "azurerm_feature" "search_rbac_preview" { name = "Microsoft.Search/enableRBACPreview" scope = "/subscriptions/your-subscription-id" # 替换为你的订阅ID }
注意:该操作需要订阅级权限,且预览特性启用后无法回滚,建议先在测试环境验证。
2. 配置搜索服务的双认证模式
在azurerm_search_service资源中,通过auth_options块开启「同时支持密钥和RBAC」模式,对应门户操作的配置:
resource "azurerm_search_service" "target_search" { name = "your-search-service-name" # 替换为你的搜索服务名称 resource_group_name = azurerm_resource_group.your_rg.name # 替换为资源组名称 location = azurerm_resource_group.your_rg.location sku = "standard" # 根据实际需求选择SKU auth_options { api_key_enabled = true # 保留API密钥认证 aad_auth_enabled = true # 启用RBAC认证 } # 依赖预览特性启用完成,避免部署顺序问题 depends_on = [azurerm_feature.search_rbac_preview] }
3. 分配RBAC权限(可选)
配置完成后,可通过azurerm_role_assignment为主体分配搜索服务的内置角色,实现细粒度权限控制:
# 示例:分配「搜索数据读者」角色给指定用户/组 resource "azurerm_role_assignment" "search_data_reader" { scope = azurerm_search_service.target_search.id role_definition_name = "Search Data Reader" principal_id = "principal-id-of-user-or-group" # 替换为主体ID }
版本要求
确保使用的AzureRM Terraform Provider版本不低于3.0.0,旧版本不支持aad_auth_enabled参数。
内容的提问来源于stack exchange,提问作者frictionlesspulley
相关产品推荐
相关产品推荐

