Azure Databricks调用Log Analytics API时遇AADSTS7000215密钥无效错误
解决AADSTS7000215:客户端密钥无效的问题
针对你在Databricks中请求Entra ID OAuth2令牌时遇到的AADSTS7000215错误,按以下步骤排查:
确认Key Vault中存储的是客户端密钥值而非ID
在Entra ID创建服务主体的客户端密钥时,系统只会显示一次密钥的明文值,请确保存入Key Vault的是这个值,而不是密钥的名称(即密钥ID)。如果误存了密钥ID,必然会触发该错误。验证Databricks密钥范围的权限配置
检查你的Databricks密钥范围是否正确关联了目标Key Vault,并且Databricks用于访问Key Vault的身份(通常是工作区系统分配的托管标识或指定的服务主体)拥有Key Vault的机密读取(Get)权限。如果权限不足,dbutils.secrets.get可能获取到空值或错误内容。校验密钥获取结果
不要直接打印密钥明文,可通过打印密钥长度验证是否获取到有效内容:key = dbutils.secrets.get(scope="kv_XXX", key="XXXx") print(f"密钥长度: {len(key)}")如果长度为0或远短于预期的密钥长度,说明密钥读取环节存在问题,需重新检查密钥范围配置或密钥名称是否正确。
核对请求参数的正确性
- 确认URL中的
xxxxxxx是你的租户ID,无拼写错误; scope参数需匹配Log Analytics API的资源标识符,正确值应为https://api.loganalytics.io/.default,如果使用了错误的scope,也可能导致认证失败(错误提示可能误导为密钥问题);client_id需确保是目标服务主体的应用(客户端)ID,而非对象ID。
- 确认URL中的
直接测试密钥有效性(排查用)
临时将代码中的key替换为你已知正确的客户端密钥值,运行代码:payload = {"grant_type":"client_credentials", "client_id": "2xxxxx", "scope":"https://api.loganalytics.io/.default", "client_secret": "你的正确密钥值"}如果能成功获取令牌,说明问题出在Databricks读取Key Vault的环节;如果仍失败,需检查服务主体是否被禁用、密钥是否过期,或服务主体是否拥有Log Analytics API的访问权限。
你的原始代码:
url = "https://login.microsoftonline.com/xxxxxxx/oauth2/token" headers = {"Content-Type": "application/x-www-form-urlencoded"} key = dbutils.secrets.get(scope="kv_XXX", key="XXXx") payload = {"grant_type":"client_credentials", "client_id": "2xxxxx", "scope":"34xxxxxxx/.default", "client_secret": key} response = requests.post(url, headers=headers, data=payload) print(response.text)
内容的提问来源于stack exchange,提问作者Fernando Stahelin
相关产品推荐
相关产品推荐

