我使用 Azure SDK 检索资源组的列表:
const MsRest = require('ms-rest-azure');
const { ResourceManagementClient } = require('azure-arm-resource');
const credentials = await MsRest.loginWithServicePrincipalSecret(appId, pass, tenantId);
const client= new ResourceManagementClient(credentials, subscriptionId);
const resourceGroups = await client.resourceGroups.list()
但是,问题是我收到了订阅中的所有资源组。我只想接收登录用户有权访问的资源组。因此,一种选择是检索资源组的 IAM(访问控制)列表,并检查登录用户是否出现在那里。我不想这样做,因为它会重新向 Azure 发出许多请求。我想在访问 Azure 时模拟登录用户,以便仅获取允许他查看的资源组。
我使用护照-azure-ad进行身份验证。
可以使用以下代码仅接收登录用户有权访问的资源组:
var msRestAzure = require('ms-rest-azure');
var resourceManagement = require("azure-arm-resource");
// Interactive Login
msRestAzure.interactiveLogin(function(err, credentials) {
var client = new resourceManagement.ResourceManagementClient(credentials, 'subscriptionid');
client.resourceGroups.list(function(err, result) {
if (err) console.log(err);
console.log(result);
});
});
您也可以参考此链接。