不知道这是否已经可以通过某种方式实现,或者是否存在预期的其他“流程”并且有意义,而我尚未发现。
我们使用@ azure / keyvault-secrets + @ azure / identity在整个应用程序和开发环境中访问/管理我们的所有机密/密钥。
在生产环境中,这很容易,因为我们可以直接将服务帐户与应用程序服务相关联,也可以只创建一个服务帐户并将其设置为环境变量,然后再切勿接触。
尽管在本地,出于开发目的,获取我们正在开发的应用程序的秘密密钥/配置并不是理想的选择,但是能够使用来自Azure cli的帐户凭据来基于密码获取秘密信息是理想的选择。开发人员开发应用程序以及他们可以访问的内容,以便我们可以在他们的帐户上强制实施mfa,并仅为其用户帐户管理对密钥的访问等等。
@ azure / identity模块当前是否支持此行为?如果不是,除了为开发人员中的每个应用配置服务帐户外,是否有针对该用例的建议行为。环境?
根据我的理解,您想使用Azure凭据来获取Azure密钥库的秘密。如果是这样,您可以使用sdk @azure/ms-rest-nodeauth
。有关Moe的详细信息,请参阅https://github.com/Azure/azure-sdk-for-node/issues/2284。详细步骤如下。
npm init -y
npm install @azure/ms-rest-nodeauth
npm install @azure/keyvault
az login
var azure = require('@azure/ms-rest-nodeauth')
var keyvault = require('@azure/keyvault')
async function main() {
const creds = await azure.AzureCliCredentials.create({ resource: "https://vault.azure.net" })
const client = new keyvault.KeyVaultClient(creds)
const secret = await client.getSecret('https://testkey08.vault.azure.net', 'test', '517cc458b7464c379d1d3e85bd2a5c94')
console.log(secret)
}
main()
.then(() => {
console.log("Successfully executed sample.");
})
.catch((err) => {
console.log(err.message);
});
更新资料
根据我的测试,如果您使用sdk@azure/keyvault-secrets
来获取密钥库的机密,请参考以下代码:
var azure = require('@azure/ms-rest-nodeauth')
var keyvault = require('@azure/keyvault-secrets')
async function main() {
const creds = await azure.AzureCliCredentials.create({ resource: "https://vault.azure.net" })
const client = new keyvault.SecretClient('https://<your key vault name>.vault.azure.net',creds)
const secret = await client.getSecret('your secret name')
console.log(secret)
}
main()
.then(() => {
console.log("Successfully executed sample.");
})
.catch((err) => {
console.log(err.message);
});
此外,根据我的测试和研究,如果我们使用sdk@azure/keyvault-secrets
和@azure/keyvault-secrets
,我们将无法使用Azure cli中的帐户凭据来获取秘密。有关更多详细信息,请参阅文档
因此,如果我们要在本地开发您的应用程序,建议您创建一个服务主体以获取密钥库。具体步骤如下
az ad sp create-for-rbac -n <your-application-name> --skip-assignment
az keyvault set-policy --name <your-key-vault-name> --spn $AZURE_CLIENT_ID --secret-permissions backup delete get list purge recover restore set
AZURE_TENANT_ID=<tenant id>
AZURE_CLIENT_ID=<app id>
AZURE_CLIENT_SECRET=<password>
var keyvault = require('@azure/keyvault-secrets')
var azure1 = require('@azure/identity')
const dotenv = require('dotenv');
dotenv.config();
async function main() {
//const creds = await azure.AzureCliCredentials.create({ resource: "https://vault.azure.net" })
// console.log("way1")
// const client = new keyvault.SecretClient('https://testkey08.vault.azure.net',creds)
// const secret = await client.getSecret('test')
// //const secret = await client.getSecret('https://testkey08.vault.azure.net', 'test', '517cc458b7464c379d1d3e85bd2a5c94')
// console.log(secret)
console.log("-----------------------")
console.log("way2")
const creds1 = new azure1.DefaultAzureCredential()
const client1 = new keyvault.SecretClient('https://testkey08.vault.azure.net',creds1)
const secret1 = await client1.getSecret('test')
console.log(secret1)
}
main()
.then(() => {
console.log("Successfully executed sample.");
})
.catch((err) => {
console.log(err.message);
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句