通过服务原则分配角色是否容易受到攻击,如果是,那么SAS及其对令牌的定期请求和验证呢,任何参考文件都会有所帮助。
对于在容器内创建blob的自动化方法,我建议您选择
RBAC
在需要持续、长期访问的情况下,使用具有适当RBAC角色的服务主体,如
Storage Blob Data Contributor
你可以访问它。
在哪里?
SAS tokens
提供对特定资源(如容器或blob)和特定权限(如写入或列表)的限时访问。因此,SAS令牌将有助于解决临时或定期访问需求等情况。
通过服务原则分配角色是否容易受到攻击,
-
如果他们的凭据被暴露或管理不善,服务主体可能会有风险。
-
为了解决这个问题,定期更改凭据并实施严格的访问控制非常重要。
这是
node.js
使用服务主体进行身份验证并在Azure blob存储中创建blob的代码。
首先创建服务主体并分配角色
Storage Blob Data contributor
角色使用此
MS-Document
.
代码:
const { DefaultAzureCredential } = require('@azure/identity');
const { BlobServiceClient } = require('@azure/storage-blob');
// Replace with your values
const accountName = "venkat32xxx3";
const containerName = "sample";
const blobName = "test.txt";
const content = "Hello, World!";
// Authenticate using DefaultAzureCredential
const credential = new DefaultAzureCredential();
const blobServiceClient = new BlobServiceClient(`https://${accountName}.blob.core.windows.net`, credential);
async function createBlob() {
try {
const containerClient = blobServiceClient.getContainerClient(containerName);
await containerClient.createIfNotExists();
const blockBlobClient = containerClient.getBlockBlobClient(blobName);
await blockBlobClient.upload(content, Buffer.byteLength(content));
console.log(`Blob "${blobName}" is uploaded successfully.`);
} catch (error) {
console.error('Error uploading blob:', error);
}
}
对于配置,将服务主体凭据存储为环境变量。
AZURE_CLIENT_ID=<your-client-id>
AZURE_CLIENT_SECRET=<your-client-secret>
AZURE_TENANT_ID=<your-tenant-id>
输出:
Blob "test.txt" is uploaded successfully.