К основному содержанию
скилл

azure-keyvault-secrets-ts — скилл Claude Code: как установить

Скилл обучает ИИ-агента безопасно сохранять, извлекать и удалять секреты или криптографические ключи в Azure Key Vault через официальные пакеты для TypeScript.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add microsoft/skills --skill azure-keyvault-secrets-ts -a claude-code
Открыть на GitHub

Что делает azure-keyvault-secrets-ts

Скилл добавляет в контекст агента готовые шаблоны работы с библиотеками @azure/keyvault-secrets, @azure/identity и @azure/keyvault-keys. Он задаёт паттерны аутентификации через DefaultAzureCredential для локальной разработки или ManagedIdentityCredential для продакшена.

Ассистент получает точные примеры чтения версий секретов, настройки мягкого удаления, восстановления значений и ротации ключей RSA или Elliptic Curve. Также внутри есть код для шифрования, верификации подписей через CryptographyClient и создания резервных копий хранилища.

В браузере эти библиотеки не работают из-за прямой привязки к среде Node.js. Для запуска в продакшене потребуется переменная AZURE_TOKEN_CREDENTIALS или прямое указание ManagedIdentityCredential.

Какие задачи решает

  • сохранить конфигурационные параметры и токены в Azure Key Vault
  • настроить безопасную аутентификацию через DefaultAzureCredential
  • реализовать мягкое удаление и восстановление секретов
  • настроить автоматическую политику ротации RSA-ключей
  • зашифровать полезную нагрузку с помощью CryptographyClient

Примеры запросов агенту

  • Напиши TypeScript-функцию для мягкого удаления и восстановления секрета из Azure Key Vault.
  • Покажи, как настроить аутентификацию через ManagedIdentityCredential и прочитать последнюю версию секрета.
  • Создай клиент CryptographyClient и настрой шифрование данных по алгоритму RSA-OAEP.

Как установить azure-keyvault-secrets-ts

1Через Skills CLI (Vercel)

npx skills add microsoft/skills --skill azure-keyvault-secrets-ts -a claude-code

2Вручную: положить файлы

~/.claude/skills/azure-keyvault-secrets-ts/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/azure-keyvault-secrets-ts/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о azure-keyvault-secrets-ts

Как установить azure-keyvault-secrets-ts в Claude Code?

Выполните в терминале команду npx skills add microsoft/skills --skill azure-keyvault-secrets-ts -a claude-code. Также можно вручную поместить файл инструкции по пути ~/.claude/skills/azure-keyvault-secrets-ts/SKILL.md.

Что делает скилл azure-keyvault-secrets-ts?

Он снабжает ассистента инструкциями и примерами кода для работы с секретами, ключами и криптографией Azure Key Vault в Node.js.

Можно ли использовать эти примеры во фронтенд-коде для браузера?

Нет, SDK от Microsoft предназначен исключительно для серверной среды Node.js. В браузерном коде такие операции с хранилищем не поддерживаются.

Исходный текст

SKILL.md · MIT
---
name: azure-keyvault-secrets-ts
description: Manage secrets using Azure Key Vault Secrets SDK for JavaScript (@azure/keyvault-secrets). Use when storing and retrieving application secrets or configuration values.
license: MIT
metadata:
  author: Microsoft
  version: "1.0.0"
  package: '@azure/keyvault-secrets'
---

# Azure Key Vault Secrets SDK for TypeScript

Manage secrets with Azure Key Vault.

## Installation

```bash
# Secrets SDK
npm install @azure/keyvault-secrets @azure/identity
```

## Environment Variables

```bash
KEY_VAULT_URL=https://<vault-name>.vault.azure.net
# Or
AZURE_KEYVAULT_NAME=<vault-name>
AZURE_TOKEN_CREDENTIALS=prod # Required only if DefaultAzureCredential is used in production
```

## Authentication

```typescript
import { DefaultAzureCredential, ManagedIdentityCredential } from "@azure/identity";
import { SecretClient } from "@azure/keyvault-secrets";

// Local dev: DefaultAzureCredential. Production: set AZURE_TOKEN_CREDENTIALS=prod or AZURE_TOKEN_CREDENTIALS=<specific_credential>
const credential = new DefaultAzureCredential({requiredEnvVars: ["AZURE_TOKEN_CREDENTIALS"]});
// Or use a specific credential directly in production:
// See https://learn.microsoft.com/javascript/api/overview/azure/identity-readme?view=azure-node-latest#credential-classes
// const credential = new ManagedIdentityCredential();
const vaultUrl = `https://${process.env.AZURE_KEYVAULT_NAME}.vault.azure.net`;

const keyClient = new KeyClient(vaultUrl, credential);
const secretClient = new SecretClient(vaultUrl, credential);
```

## Secrets Operations

### Create/Set Secret

```typescript
const secret = await secretClient.setSecret("MySecret", "secret-value");

// With attributes
const secretWithAttrs = await secretClient.setSecret("MySecret", "value", {
  enabled: true,
  expiresOn: new Date("2025-12-31"),
  contentType: "application/json",
  tags: { environment: "production" }
});
```

### Get Secret

```typescript
// Get latest version
const secret = await secretClient.getSecret("MySecret");
console.log(secret.value);

// Get specific version
const specificSecret = await secretClient.getSecret("MySecret", {
  version: secret.properties.version
});
```

### List Secrets

```typescript
for await (const secretProperties of secretClient.listPropertiesOfSecrets()) {
  console.log(secretProperties.name);
}

// List versions
for await (const version of secretClient.listPropertiesOfSecretVersions("MySecret")) {
  console.log(version.version);
}
```

### Delete Secret

```typescript
// Soft delete
const deletePoller = await secretClient.beginDeleteSecret("MySecret");
await deletePoller.pollUntilDone();

// Purge (permanent)
await secretClient.purgeDeletedSecret("MySecret");

// Recover
const recoverPoller = await secretClient.beginRecoverDeletedSecret("MySecret");
await recoverPoller.pollUntilDone();
```

## Keys Operations

### Create Keys

```typescript
// Generic key
const key = await keyClient.createKey("MyKey", "RSA");

// RSA key with size
const rsaKey = await keyClient.createRsaKey("MyRsaKey", { keySize: 2048 });

// Elliptic Curve key
const ecKey = await keyClient.createEcKey("MyEcKey", { curve: "P-256" });

// With attributes
const keyWithAttrs = await keyClient.createKey("MyKey", "RSA", {
  enabled: true,
  expiresOn: new Date("2025-12-31"),
  tags: { purpose: "encryption" },
  keyOps: ["encrypt", "decrypt", "sign", "verify"]
});
```

### Get Key

```typescript
const key = await keyClient.getKey("MyKey");
console.log(key.name, key.keyType);
```

### List Keys

```typescript
for await (const keyProperties of keyClient.listPropertiesOfKeys()) {
  console.log(keyProperties.name);
}
```

### Rotate Key

```typescript
// Manual rotation
const rotatedKey = await keyClient.rotateKey("MyKey");

// Set rotation policy
await keyClient.updateKeyRotationPolicy("MyKey", {
  lifetimeActions: [{ action: "Rotate", timeBeforeExpiry: "P30D" }],
  expiresIn: "P90D"
});
```

### Delete Key

```typescript
const deletePoller = await keyClient.beginDeleteKey("MyKey");
await deletePoller.pollUntilDone();

// Purge
await keyClient.purgeDeletedKey("MyKey");
```

## Cryptographic Operations

### Create CryptographyClient

```typescript
import { CryptographyClient } from "@azure/keyvault-keys";

// From key object
const cryptoClient = new CryptographyClient(key, credential);

// From key ID
const cryptoClient = new CryptographyClient(key.id!, credential);
```

### Encrypt/Decrypt

```typescript
// Encrypt
const encryptResult = await cryptoClient.encrypt({
  algorithm: "RSA-OAEP",
  plaintext: Buffer.from("My secret message")
});

// Decrypt
const decryptResult = await cryptoClient.decrypt({
  algorithm: "RSA-OAEP",
  ciphertext: encryptResult.result
});

console.log(decryptResult.result.toString());
```

### Sign/Verify

```typescript
import { createHash } from "node:crypto";

// Create digest
const hash = createHash("sha256").update("My message").digest();

// Sign
const signResult = await cryptoClient.sign("RS256", hash);

// Verify
const verifyResult = await cryptoClient.verify("RS256", hash, signResult.result);
console.log("Valid:", verifyResult.result);
```

### Wrap/Unwrap Keys

```typescript
// Wrap a key (encrypt it for storage)
const wrapResult = await cryptoClient.wrapKey("RSA-OAEP", Buffer.from("key-material"));

// Unwrap
const unwrapResult = await cryptoClient.unwrapKey("RSA-OAEP", wrapResult.result);
```

## Backup and Restore

```typescript
// Backup
const keyBackup = await keyClient.backupKey("MyKey");
const secretBackup = await secretClient.backupSecret("MySecret");

// Restore (can restore to different vault)
const restoredKey = await keyClient.restoreKeyBackup(keyBackup!);
const restoredSecret = await secretClient.restoreSecretBackup(secretBackup!);
```

## Key Types

```typescript
import {
  KeyClient,
  KeyVaultKey,
  KeyProperties,
  DeletedKey,
  CryptographyClient,
  KnownEncryptionAlgorithms,
  KnownSignatureAlgorithms
} from "@azure/keyvault-keys";

import {
  SecretClient,
  KeyVaultSecret,
  SecretProperties,
  DeletedSecret
} from "@azure/keyvault-secrets";
```

## Error Handling

```typescript
try {
  const secret = await secretClient.getSecret("NonExistent");
} catch (error: any) {
  if (error.code === "SecretNotFound") {
    console.log("Secret does not exist");
  } else {
    throw error;
  }
}
```

## Best Practices

1. **Use `DefaultAzureCredential` for local development; use `ManagedIdentityCredential` or `WorkloadIdentityCredential` for production**
2. **Enable soft-delete** - Required for production vaults
3. **Set expiration dates** - On both keys and secrets
4. **Use key rotation policies** - Automate key rotation
5. **Limit key operations** - Only grant needed operations (encrypt, sign, etc.)
6. **Browser not supported** - These SDKs are Node.js only

© Microsoft · MIT · microsoft/skills

Похожие скиллы

Все скиллы по теме «Облака: AWS, Azure, GCP» →
caveman-manage JuliusBrussee Проверяет состояние и результаты экспериментов Caveman Cloud, предлагает одно действие или блокирует рискованный запрос. Нужен перед запуском, одобрением, отменой или откатом. CX Codex +1 104 200установок workers-best-practices cloudflare Скилл настраивает ИИ на проверку продакшен-кода Cloudflare Workers по актуальным правилам рантайма, типам Wrangler и антипаттернам. CX Codex +1 126 100установок cloudflare-email-service cloudflare Скилл для работы с Cloudflare Email Sending и Email Routing: помогает настроить отправку и приём писем в Workers. CX Codex +1 102 300установок firebase-basics официальный google Скилл настраивает Firebase CLI, помогает войти в аккаунт, создать или выбрать проект и скачать конфигурацию Android или iOS. CX Codex 14 100установок cloudflare-one cloudflare Помогает агенту проектировать, настраивать и разбирать развёртывания Cloudflare One Zero Trust и SASE. Пригодится, когда нужно спланировать Access, Gateway или туннели без похода в документацию вручную. CX Codex +1 93 100установок cloudflare-one-migrations cloudflare Помогает спланировать переход с VPN, SWG или SASE на Cloudflare One: сопоставляет политики, находит пробелы и расписывает порядок выката. CX Codex +1 89 500установок

Из того же набора207

Весь набор →
azure-storage-blob-ts Скилл учит агента работать с хранилищем Azure Blob Storage через библиотеку @azure/storage-blob на Node.js и TypeScript. Пригодится при загрузке файлов и настройке токенов SAS. 1установок azure-search-documents-ts Скилл для работы с Azure AI Search SDK на JavaScript: индексы, векторный и гибридный поиск, семантический ранкинг. Пригодится, когда агент пишет код поиска по Azure. 1установок azure-postgres-ts Помогает настроить подключение к Azure Database for PostgreSQL Flexible Server на TypeScript через node-postgres с парольной или бессерверной авторизацией. 1установок azure-monitor-opentelemetry-ts Скилл помогает подключить Azure Monitor и OpenTelemetry к Node.js-приложению: настроить трассировки, метрики и логи для Application Insights. 1установок azure-keyvault-keys-ts Скилл помогает писать TypeScript-код для ключей Azure Key Vault: создавать и ротировать ключи, шифровать данные и подписывать их. Пригодится при работе с SDK @azure/keyvault-keys. 1установок azure-identity-ts Скилл подсказывает агенту, как настроить аутентификацию в Azure через библиотеку @azure/identity в TypeScript. Пригодится, когда в проекте появляется DefaultAzureCredential или managed identity. 1установок azure-eventhub-ts Скилл обучает ИИ-агента писать код для потоковой обработки данных через Azure Event Hubs на TypeScript. Пригодится при настройке приёма телеметрии IoT и аналитики в реальном времени. 1установок azure-cosmos-ts Скилл для работы с Azure Cosmos DB через JavaScript/TypeScript SDK: CRUD документов, запросы, массовые операции. Пригодится, когда агент пишет код доступа к данным. 1установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой