使用服务主体创建/管理Azure AD B2C租户的认证问题求助
使用服务主体通过Bicep自动化部署Azure AD B2C租户遇到权限问题
我正在搭建基于Bicep的流水线,用于部署和管理应用基础设施,目前在Azure AD B2C租户部署环节遇到障碍。
我已经完成了B2C租户部署的基础Bicep模块定义:
resource b2cDirectory 'Microsoft.AzureActiveDirectory/b2cDirectories@2021-04-01' = { location: country.name name: tenantName sku: { name: 'PremiumP2' tier: 'A0' } properties: { createTenantProperties: { countryCode: country.code displayName: 'B2C - ${tenantDisplayName}' } } }
使用拥有目标订阅Owner或Contributor权限的AAD用户登录az cli时,部署完全正常。但B2C租户的管理模型要求使用B2C自身身份而非现有组织身份进行管理,这给后续自动化带来了问题:Azure资源管理器部署B2C时会将创建者添加为新租户的全局管理员,但后续的管理任务(比如应用注册、自定义策略部署)需要登录到B2C租户本身。
为了实现端到端自动化(尤其是在流水线中),我尝试使用服务主体来部署B2C,这样部署脚本可以直接登录新租户执行后续管理任务,但创建租户时遇到了如下错误:
{ "status": "Failed", "error": { "code": "DeploymentFailed", "message": "At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/arm-deployment-operations for usage details.", "details": [ { "code": "Conflict", "message": "{\r\n \"status\": \"Failed\",\r\n \"error\": {\r\n \"code\": \"ResourceDeploymentFailure\",\r\n \"message\": \"The resource operation completed with terminal provisioning state 'Failed'.\",\r\n \"details\": [\r\n {\r\n \"code\": \"DeploymentFailed\",\r\n \"message\": \"At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/arm-deployment-operations for usage details.\",\r\n \"details\": [\r\n {\r\n \"code\": \"Unauthorized\",\r\n \"message\": \"{\\r\\n \\"error\\": {\\r\\n \\"code\\": \\"Unauthenticated\\",\\r\\n \\"message\\": \\"Unauthenticated\\",\\r\\n \\"details\\": null,\\r\\n \\"target\\": \\"Authentication\\",\\r\\n \\"additionalInfo\\": null\\r\\n }\\r\\n}\"\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n}\" } ] } }
我猜测服务主体在此场景下不被支持,AAD无法为新租户初始化全局管理员。想请教有没有人成功用服务主体解决过这个问题?如果没有,希望能得到其他可行的自动化方案建议。
目前我的备选方案是编写本地脚本执行初始B2C部署,然后手动创建可被DevOps流水线和Bicep脚本访问的服务主体,但这个方案不够理想,只是暂时可行。
内容的提问来源于stack exchange,提问作者Clinton Campbell
相关产品推荐
相关产品推荐

