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

azure-keyvault-keys-rust — скилл для Claude Code: как установить

Подсказывает Claude Code и GitHub Copilot, как работать с ключами в Azure Key Vault на Rust. Помогает генерировать ключи, настраивать шифрование и управлять доступом через официальный SDK.

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

Что делает azure-keyvault-keys-rust

Скилл добавляет в контекст агента шаблоны и правила для библиотеки azure_security_keyvault_keys. Он ориентирует модель на работу с клиентом KeyClient: создание ключей RSA, EC или аппаратных ключей HSM, чтение пагинации через Pager<T> и удаление сущностей. Отдельно расписана схема конвертного шифрования, при которой сам приватный ключ никогда не покидает облачный HSM.

В официальном Rust SDK для Azure нет привычного типа DefaultAzureCredential. Скилл прямо запрещает его вызов и наставляет использовать DeveloperToolsCredential для локальной разработки и ManagedIdentityCredential для продакшена. Зависимости предписано добавлять строго через команду cargo add azure_security_keyvault_keys azure_identity tokio futures, не трогая Cargo.toml руками. Для подключения к хранилищу обязательна переменная окружения AZURE_KEYVAULT_URL.

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

  • создать криптографические ключи RSA или EC в Azure Key Vault на Rust
  • реализовать конвертное шифрование с операциями wrap и unwrap для ключа DEK
  • настроить аутентификацию через DeveloperToolsCredential или ManagedIdentityCredential
  • обойти список свойств ключей через Pager<T>

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

  • Сгенерируй на Rust код создания EC-ключа с кривой P-256 в Azure Key Vault
  • Напиши операцию wrap_key для симметричного ключа шифрования данных на Rust
  • Покажи, как перечислить все ключи в хранилище Key Vault с помощью KeyClient

Как установить azure-keyvault-keys-rust

1Через Skills CLI (Vercel)

npx skills add microsoft/skills --skill azure-keyvault-keys-rust -a claude-code

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

~/.claude/skills/azure-keyvault-keys-rust/SKILL.md

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

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

Вопросы о azure-keyvault-keys-rust

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

Выполните в терминале команду npx skills add microsoft/skills --skill azure-keyvault-keys-rust -a claude-code. Файлы скилла сохранятся по пути ~/.claude/skills/azure-keyvault-keys-rust/SKILL.md.

Что делает скилл azure-keyvault-keys-rust?

Он даёт агенту инструкции и примеры кода на Rust для создания ключей, конвертного шифрования и подписи данных через официальный крейт azure_security_keyvault_keys.

Почему в коде не используется DefaultAzureCredential?

В Rust SDK для Azure этот тип отсутствует. Локально применяется DeveloperToolsCredential, а на сервере — ManagedIdentityCredential.

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

SKILL.md · MIT
---
name: azure-keyvault-keys-rust
description: |
  Azure Key Vault Keys library for Rust. Create, manage, and use cryptographic keys including RSA, EC, and HSM-protected keys.
  Triggers: "keyvault keys rust", "KeyClient rust", "create key rust", "encrypt rust", "wrap key rust", "sign rust".
license: MIT
metadata:
  author: Microsoft
  package: azure_security_keyvault_keys
---

# Azure Key Vault Keys library for Rust

Secure storage and management of cryptographic keys — RSA, EC, and HSM-protected.

Use this skill when:

- An app needs to create or manage cryptographic keys in Key Vault from Rust
- You need to wrap/unwrap data encryption keys (envelope encryption)
- You need to sign or verify data with Key Vault keys
- You need HSM-protected keys

> **IMPORTANT:** Only use the official `azure_security_keyvault_keys` crate published by the [azure-sdk](https://crates.io/users/azure-sdk) crates.io user. Do NOT use unofficial or community crates. Official crates use underscores in names and none have version 0.21.0.

## Installation

```sh
cargo add azure_security_keyvault_keys azure_identity tokio futures
```

> If your code uses `azure_core` types directly, add `azure_core` to `Cargo.toml`. If you only use `azure_security_keyvault_keys` re-exports, direct `azure_core` dependency is optional.

## Environment Variables

```bash
AZURE_KEYVAULT_URL=https://<vault-name>.vault.azure.net/ # Required for all operations
```

## Authentication

Rust Azure SDK code must not use `DefaultAzureCredential`. The Rust identity crate does not provide that type.

```rust
use azure_identity::DeveloperToolsCredential;
use azure_security_keyvault_keys::KeyClient;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Local dev: DeveloperToolsCredential. Production: use ManagedIdentityCredential.
    let credential = DeveloperToolsCredential::new(None)?;
    let client = KeyClient::new(
        "https://<vault-name>.vault.azure.net/",
        credential.clone(),
        None,
    )?;

    let key = client.get_key("key-name", None).await?.into_model()?;
    println!("Key: {:?}", key.key);
    Ok(())
}
```

Prefer the crate README/examples when checking public operation shapes such as key creation, wrapping, and version-aware unwrap flows.

## Core Workflow

### Create Key

```rust
use azure_security_keyvault_keys::{
    models::{CreateKeyParameters, CurveName, KeyType},
    ResourceExt,
};

// Create an EC key
let body = CreateKeyParameters {
    kty: Some(KeyType::Ec),
    curve: Some(CurveName::P256),
    ..Default::default()
};

let key = client
    .create_key("key-name", body.try_into()?, None)
    .await?
    .into_model()?;

println!(
    "Name: {:?}, Type: {:?}, Version: {:?}",
    key.resource_id()?.name,
    key.key.as_ref().map(|k| k.kty.as_ref()),
    key.resource_id()?.version,
);
```

### Update Key Properties

```rust
use azure_security_keyvault_keys::models::UpdateKeyPropertiesParameters;
use std::collections::HashMap;

#[allow(clippy::needless_update)]
let params = UpdateKeyPropertiesParameters {
    tags: Some(HashMap::from_iter(vec![("env".into(), "prod".into())])),
    ..Default::default()
};

client
    .update_key_properties("key-name", params.try_into()?, None)
    .await?
    .into_model()?;
```

### Delete Key

```rust
client.delete_key("key-name", None).await?;
```

### List Keys (Pagination)

`list_key_properties` returns a `Pager<T>` — iterate items directly:

```rust
use azure_security_keyvault_keys::ResourceExt;
use futures::TryStreamExt as _;

let mut pager = client.list_key_properties(None)?;
while let Some(key) = pager.try_next().await? {
    println!("Found: {}", key.resource_id()?.name);
}
```

## Wrap / Unwrap (Envelope Encryption)

Key Vault performs crypto operations server-side — the private key never leaves the HSM:

```rust
use azure_security_keyvault_keys::{
    models::{
        CreateKeyParameters, EncryptionAlgorithm, KeyOperationParameters, KeyType,
    },
    ResourceExt, ResourceId,
};
use rand::random;

// Create a key encryption key (KEK)
let body = CreateKeyParameters {
    kty: Some(KeyType::Rsa),
    key_size: Some(2048),
    ..Default::default()
};

let key = client
    .create_key("kek-name", body.try_into()?, None)
    .await?
    .into_model()?;

// Generate a symmetric data encryption key (DEK)
let dek = random::<u32>().to_le_bytes().to_vec();

// Wrap the DEK with the KEK
let mut params = KeyOperationParameters {
    algorithm: Some(EncryptionAlgorithm::RsaOaep256),
    value: Some(dek.clone()),
    ..Default::default()
};
let wrapped = client
    .wrap_key("kek-name", params.clone().try_into()?, None)
    .await?
    .into_model()?;

// Retain the key version used to wrap so you can unwrap with the same version later
let ResourceId { version, .. } = wrapped.resource_id()?;
let key_version = version.as_deref().unwrap_or_default();

// Unwrap to recover the DEK
params.value = wrapped.result;
let unwrapped = client
    .unwrap_key("kek-name", key_version, params.try_into()?, None)
    .await?
    .into_model()?;

assert!(matches!(unwrapped.result, Some(ref result) if result.eq(&dek)));
```

## Key Types

| Type    | Use Case                      | Parameter         |
| ------- | ----------------------------- | ----------------- |
| EC      | Signing, key agreement        | `KeyType::Ec`     |
| RSA     | Encryption, signing, wrapping | `KeyType::Rsa`    |
| Oct     | Symmetric operations (HSM)    | `KeyType::Oct`    |
| EC-HSM  | HSM-protected EC keys         | `KeyType::EcHsm`  |
| RSA-HSM | HSM-protected RSA keys        | `KeyType::RsaHsm` |

## RBAC Roles

For Entra ID auth, assign one of these roles:

| Role                       | Access                  |
| -------------------------- | ----------------------- |
| `Key Vault Crypto User`    | Use keys for crypto ops |
| `Key Vault Crypto Officer` | Full key management     |

## Best Practices

1. **Use `cargo add` to manage dependencies, never edit `Cargo.toml` directly.** Add and remove Rust SDK dependencies with cargo commands instead of manual manifest edits.
2. **Add `azure_core` only when importing `azure_core` types directly.** If your code imports `azure_core::http::Url`, `azure_core::http::RequestContent`, or `azure_core::error::ErrorKind`, include `azure_core`; otherwise a direct dependency is optional.
3. **Use `DeveloperToolsCredential`** for local dev, **`ManagedIdentityCredential`** for production — Rust does not provide a single `DefaultAzureCredential` type
4. **Never hardcode credentials** — use environment variables or managed identity
5. **Use `..Default::default()`** with `#[allow(clippy::needless_update)]` for model struct updates
6. **Use `ResourceExt`** to extract key name/version from key IDs
7. **Reuse clients** — `KeyClient` is thread-safe; create once, share across tasks
8. **Run `cargo clippy -- -D warnings`** when the prompt, eval, or CI expects lint-clean output

## Reference Links

| Resource      | Link                                                                                            |
| ------------- | ----------------------------------------------------------------------------------------------- |
| API Reference | https://docs.rs/azure_security_keyvault_keys/latest/azure_security_keyvault_keys                |
| crates.io     | https://crates.io/crates/azure_security_keyvault_keys                                           |
| Source Code   | https://github.com/Azure/azure-sdk-for-rust/tree/main/sdk/keyvault/azure_security_keyvault_keys |

© 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установок

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

Весь набор →
agent-framework-azure-ai-py Скилл помогает создавать постоянных агентов Azure AI Foundry на Python. Подходит для hosted tools, MCP-серверов и потоковых ответов. 8установок wiki-researcher Скилл ведёт многошаговое исследование кодовой базы: трассирует реальные пути вызовов и подкрепляет каждый вывод ссылкой на файл. 7установок azure-ai Подключает к агенту сервисы Azure: поиск по индексам, распознавание и синтез речи, OCR. Пригодится, когда проект уже живёт в Azure. 6установок azure-keyvault-secrets-rust Подсказывает агенту, как читать и записывать секреты в Azure Key Vault из Rust через официальный крейт azure_security_keyvault_secrets. 6установок wiki-qa Отвечает на вопросы по кодовой базе строго по файлам проекта, строит Mermaid-диаграммы и даёт ссылки на конкретные строки. 5установок wiki-page-writer Скилл создаёт технические wiki-страницы с диаграммами Mermaid, ссылками на исходный код и разбором системы от первых принципов. 5установок wiki-onboarding Собирает четыре вводных руководства по репозиторию — для контрибьютора, staff-инженера, руководителя и продакта. Пригодится, когда в проект приходят новые люди. 5установок wiki-llms-txt Создаёт файлы llms.txt и llms-full.txt по спецификации llmstxt.org, превращая проектную документацию и вики в сжатый контекст для языковых моделей. 5установок

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

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