尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

【研发类-框架和库Skills】azure-keyvault-keys-ts 技能

【研发类-框架和库Skills】azure-keyvault-keys-ts 技能 使用Azure Key Vault Keys SDK for JavaScript (azure/keyvault-keys)管理加密密钥。用于创建、加密/解密、签名或轮换密钥。 下载地址agentic-awesome-skills/skills/azure-keyvault-keys-ts at main · sickn33/agentic-awesome-skills · GitHub技能概述azure-keyvault-keys-ts 技能是一个专门用于TypeScript/JavaScript开发的Azure Key Vault Keys SDK技能包。它提供了使用Azure Key Vault管理加密密钥的完整功能。该技能包适用于需要在Node.js应用中实现密钥管理、加密操作的开发者。主要功能密钥管理创建、获取、更新和删除密钥密钥轮换支持手动和自动密钥轮换策略加密操作加密、解密、签名、验证操作密钥包装包装和解包密钥备份恢复密钥备份和恢复功能机密管理同时支持Key Vault机密操作触发条件在以下情况下应该调用此技能用户需要在TypeScript/JavaScript应用中管理Azure Key Vault密钥需要创建、加密/解密、签名或轮换密钥需要实现密钥管理功能需要执行加密操作处理过程1. 安装依赖使用npm安装必要的包# Keys SDKnpm install azure/keyvault-keys azure/identity2. 创建客户端使用DefaultAzureCredential创建KeyClientimport { DefaultAzureCredential } from azure/identity;import { KeyClient, CryptographyClient } from azure/keyvault-keys;const credential new DefaultAzureCredential();const vaultUrl https://${process.env.AZURE_KEYVAULT_NAME}.vault.azure.net;const keyClient new KeyClient(vaultUrl, credential);3. 创建密钥创建不同类型的密钥// 通用密钥const key await keyClient.createKey(MyKey, RSA);// RSA密钥指定大小const rsaKey await keyClient.createRsaKey(MyRsaKey, {keySize: 2048});// 椭圆曲线密钥const ecKey await keyClient.createEcKey(MyEcKey, {curve: P-256});// 带属性的密钥const keyWithAttrs await keyClient.createKey(MyKey, RSA, {enabled: true,expiresOn: new Date(2025-12-31),tags: { purpose: encryption },keyOps: [encrypt, decrypt, sign, verify]});4. 加密操作使用CryptographyClient执行加密操作import { CryptographyClient } from azure/keyvault-keys;// 从密钥对象创建const cryptoClient new CryptographyClient(key, credential);// 加密const encryptResult await cryptoClient.encrypt({algorithm: RSA-OAEP,plaintext: Buffer.from(My secret message)});// 解密const decryptResult await cryptoClient.decrypt({algorithm: RSA-OAEP,ciphertext: encryptResult.result});console.log(decryptResult.result.toString());输入要求使用此技能时用户需要提供Key Vault URLKey Vault的URL地址或名称身份认证凭据DefaultAzureCredential密钥名称要操作的密钥名称密钥类型创建密钥时需要的类型RSA、EC等输出说明技能将提供完整的TypeScript代码示例包含密钥和机密操作的实现加密操作示例加密、解密、签名、验证的代码配置指南环境变量和连接配置的详细说明最佳实践建议关于密钥管理的安全建议使用示例示例1机密操作// 创建/设置机密const secret await secretClient.setSecret(MySecret, secret-value, {enabled: true,expiresOn: new Date(2025-12-31),contentType: application/json,tags: { environment: production }});// 获取机密const secret await secretClient.getSecret(MySecret);console.log(secret.value);// 列出机密for await (const secretProperties of secretClient.listPropertiesOfSecrets()) {console.log(secretProperties.name);}示例2签名和验证import { createHash } from node:crypto;// 创建摘要const hash createHash(sha256).update(My message).digest();// 签名const signResult await cryptoClient.sign(RS256, hash);// 验证const verifyResult await cryptoClient.verify(RS256, hash, signResult.result);console.log(Valid:, verifyResult.result);示例3密钥轮换// 手动轮换const rotatedKey await keyClient.rotateKey(MyKey);// 设置轮换策略await keyClient.updateKeyRotationPolicy(MyKey, {lifetimeActions: [{ action: Rotate, timeBeforeExpiry: P30D }],expiresIn: P90D});示例4备份和恢复// 备份const keyBackup await keyClient.backupKey(MyKey);const secretBackup await secretClient.backupSecret(MySecret);// 恢复可恢复到不同的保管库const restoredKey await keyClient.restoreKeyBackup(keyBackup!);const restoredSecret await secretClient.restoreSecretBackup(secretBackup!);密钥类型导入import {KeyClient,KeyVaultKey,KeyProperties,DeletedKey,CryptographyClient,KnownEncryptionAlgorithms,KnownSignatureAlgorithms} from azure/keyvault-keys;import {SecretClient,KeyVaultSecret,SecretProperties,DeletedSecret} from azure/keyvault-secrets;错误处理try {const secret await secretClient.getSecret(NonExistent);} catch (error: any) {if (error.code SecretNotFound) {console.log(Secret does not exist);} else {throw error;}}最佳实践使用DefaultAzureCredential在开发和生产环境中都能工作启用软删除生产环境保管库必须启用设置过期日期密钥和机密都应设置过期日期使用密钥轮换策略自动化密钥轮换限制密钥操作只授予需要的操作encrypt、sign等不支持浏览器这些SDK仅支持Node.js注意事项此技能仅适用于任务明确匹配上述范围的情况输出不应替代环境特定的验证、测试或专家审查如果缺少必需的输入、权限、安全边界或成功标准请停止并请求澄清
返回列表