你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 JavaScript 在 Azure 密钥保管库中设置、更新和轮换机密

使用相应的编程身份验证凭据创建 SecretClient,然后使用客户端在 Azure 密钥保管库中设置、更新和轮换机密。

设置机密

若要在 Azure 密钥保管库中设置机密,请使用 SecretClient 类的 setSecret 方法。

机密值类型为字符串。 初始值可以是可以序列化为字符串(如 JSON 或 BASE64 编码数据)的任何值。 在密钥保管库中设置机密之前,需要提供序列化;从密钥保管库获取机密后,需要提供反序列化。

const name = 'mySecret';
const value = 'mySecretValue'; // or JSON.stringify({'key':'value'})

const { name, value, properties } = await client.setSecret(
    secretName,
    secretValue
); 

创建机密时,KeyVaultSecret 响应包括 SecretProperties 对象,该对象包含机密的元数据,例如:

  • createdOn:创建机密的 UTC 日期和时间。
  • id:机密的完整 URL。
  • recoverableDays:删除机密后可以恢复机密的天数。
  • recoveryLevel:值包括:“Purgeable”、“Recoverable+Purgeable”、“Recoverable”、“Recoverable+ProtectedSubscription”。
  • updatedOn:最后更新机密的 UTC 日期和时间。
  • version:机密的版本。

使用属性设置机密

将 SecretClient 类的 setSecret 方法与 SetSecretOptions 配合使用,以包含与机密一起运行的可选参数,例如:

  • contentType:对机密内容类型的表示和理解。 使用建议包括本机类型、你自己的自定义 TypeScript 类型或 MIME 类型。 此值在 Azure 门户中可见。
  • enabled:默认为 true。
  • expiresOn:机密过期的 UTC 日期和时间。
  • notBefore:在此 UTC 日期和时间之前不能使用机密。
  • tags:可用于与机密关联的自定义名称/值对。
const name = 'mySecret';
const value = JSON.stringify({
    'mykey':'myvalue', 
    'myEndpoint':'https://myendpoint.com'
});
const secretOptions = {
    // example options
    contentType: 'application/json',
    tags: { 
        project: 'test-cluster', 
        owner: 'jmclane',
        team: 'devops'
    }
};

const { name, value, properties } = await client.setSecret(
    secretName,
    secretValue, 
    secretOptions
);

此方法返回 KeyVaultSecret 对象。

更新机密值。

要更新“机密值”,请使用上一部分所示的 setSecret 方法。 请确保将新值作为字符串传递,同时传递当前版本的机密中要保留的所有属性。 在对 setSecret 的其他调用中未设置的任何当前属性都将丢失。

这会生成新版本的机密。 返回的 SecretProperties 对象包括新版本 ID。

更新机密属性

要更新机密的属性,请使用 SecretClient 类的 updateSecretProperties 方法。 未在请求中指定的属性将保留不变。 不能更改机密本身的值。 该操作需要 secrets/set 权限。

const name = 'mySecret';

// Update tags
const updatedTagName = 'existingTag';
const updatedTagValue = secret.properties.version.tags[updatedTagName] + ' additional information';

// Use version from existing secret
const version = secret.properties.version;

// Options to update
const secretOptions = {
    tags: {
        'newTag': 'newTagValue', // Set new tag
        'updatedTag': updatedTagValue // Update existing tag
    },
    enabled: false
}

// Update secret's properties - doesn't change secret name or value
const properties = await client.updateSecretProperties(
    secretName,
    secretVersion,
    secretOptions,
);

该方法返回 SecretProperties 对象。

轮换机密

要轮换机密,需要为 SecretNearExpiry 事件创建事件网格事件订阅,并提供应随事件触发器一起调用的轮换功能。 使用以下教程之一为使用以下内容的资源自动轮换机密:

后续步骤