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

azure-keyvault-secrets-rust — скилл для Claude Code: секреты Azure

Подсказывает агенту, как читать и записывать секреты в Azure Key Vault из Rust через официальный крейт azure_security_keyvault_secrets.

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

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

Скилл включается, когда в коде на Rust нужно достать пароль, API-ключ или строку подключения из Azure Key Vault. Внутри — примеры на SecretClient: получить секрет, записать новый, обновить свойства, удалить, перебрать список с постраничной выдачей. Отдельный блок про обработку ошибок, когда секрета нет.

Агенту заданы границы: брать только официальный крейт azure_security_keyvault_secrets от пользователя azure-sdk на crates.io, а не сторонние обёртки. Зависимости ставятся через cargo add, править Cargo.toml руками не надо. azure_core добавляют в манифест лишь тогда, когда типы этого крейта импортируются напрямую.

Для работы нужна переменная окружения AZURE_KEYVAULT_URL с адресом хранилища. В Rust нет DefaultAzureCredential, поэтому для локальной разработки берут DeveloperToolsCredential, а в продакшене — ManagedIdentityCredential. Учётке в Entra ID нужна роль Key Vault Secrets User для чтения или Key Vault Secrets Officer для полного управления.

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

  • достать пароль или API-ключ из Azure Key Vault в приложении на Rust
  • записать новый секрет и сразу увидеть его версию
  • обновить теги и content type у существующего секрета
  • перебрать все секреты хранилища постранично
  • обработать ошибку, когда секрет не найден или доступа нет

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

  • покажи, как через SecretClient получить секрет из Azure Key Vault
  • добавь в проект запись секрета через azure_security_keyvault_secrets
  • перепиши перебор секретов на Pager с try_next

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

1Через Skills CLI (Vercel)

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

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

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

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

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

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

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

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

Что делает azure-keyvault-secrets-rust?

Даёт агенту готовые примеры работы с Azure Key Vault из Rust: чтение, запись, обновление, удаление и постраничный перебор секретов через SecretClient.

Почему в примерах нет DefaultAzureCredential?

Rust-крейт azure_identity такого типа не предоставляет. Для локальной разработки скилл советует DeveloperToolsCredential, для продакшена — ManagedIdentityCredential.

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

SKILL.md · MIT
---
name: azure-keyvault-secrets-rust
description: |
  Azure Key Vault Secrets library for Rust. Store and retrieve secrets, passwords, and API keys.
  Triggers: "keyvault secrets rust", "SecretClient rust", "get secret rust", "set secret rust", "list secrets rust".
license: MIT
metadata:
  author: Microsoft
  package: azure_security_keyvault_secrets
---

# Azure Key Vault Secrets library for Rust

Secure storage for passwords, API keys, and connection strings.

Use this skill when:

- An app needs to store or retrieve secrets from Azure Key Vault in Rust
- You need to set, get, update, or delete secrets
- You need to list secret properties with pagination
- You need error handling for missing secrets

> **IMPORTANT:** Only use the official `azure_security_keyvault_secrets` 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_secrets 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_secrets` 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_secrets::SecretClient;

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

    let secret = client
        .get_secret("secret-name", None)
        .await?
        .into_model()?;
    println!("Secret: {:?}", secret.value);
    Ok(())
}
```

Prefer the crate README/examples when checking whether pagers yield items directly and how `ResourceExt` is used in public examples.

## Core Workflow

### Set Secret

```rust
use azure_security_keyvault_secrets::{models::SetSecretParameters, ResourceExt};

let params = SetSecretParameters {
    value: Some("secret-value".into()),
    ..Default::default()
};

let secret = client
    .set_secret("secret-name", params.try_into()?, None)
    .await?
    .into_model()?;

println!(
    "Name: {:?}, Version: {:?}",
    secret.resource_id()?.name,
    secret.resource_id()?.version
);
```

### Update Secret Properties

```rust
use azure_security_keyvault_secrets::models::UpdateSecretPropertiesParameters;
use std::collections::HashMap;

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

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

### Delete Secret

```rust
client.delete_secret("secret-name", None).await?;
```

### List Secrets (Pagination)

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

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

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

## Error Handling

```rust
match client.get_secret("secret-name", None).await {
    Ok(response) => println!("Secret Value: {:?}", response.into_model()?.value),
    Err(err) => println!("Error: {:#?}", err.into_inner()?),
}

// Error output includes structured ErrorResponse with code and message
```

## RBAC Roles

For Entra ID auth, assign one of these roles:

| Role                        | Access                 |
| --------------------------- | ---------------------- |
| `Key Vault Secrets User`    | Read secrets           |
| `Key Vault Secrets Officer` | Full secret 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 resource name/version from secret IDs
7. **Reuse clients** — `SecretClient` 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_secrets/latest/azure_security_keyvault_secrets             |
| crates.io     | https://crates.io/crates/azure_security_keyvault_secrets                                           |
| Source Code   | https://github.com/Azure/azure-sdk-for-rust/tree/main/sdk/keyvault/azure_security_keyvault_secrets |

© Microsoft · MIT · microsoft/skills

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

Всё по теме «Облака: AWS, Azure, GCP» →
azure-keyvault devops-skills Скилл для работы с Azure Key Vault: хранит секреты, ключи и сертификаты, настраивает доступ и подключение к сервисам Azure. CX Codex +1 321установок azure-key-vault MicrosoftDocs Скилл даёт агенту справочник по Azure Key Vault и Managed HSM: диагностика ошибок, настройка RBAC, Private Link и развёртывание через Bicep или Terraform. CX Codex +1 309установок azure-security MicrosoftDocs Даёт агенту справку по защите Azure: от усиления AKS и VM до ключей Key Vault и подписи контейнеров. CX Codex +1 304установок azure-pipelines-validator akin-ozer Проверяет azure-pipelines.yml локальными скриптами: синтаксис, безопасность, best practices. Пригодится перед мержем пайплайна. CX Codex +1 637установок dt-obs-azure Dynatrace Скилл учит агента анализировать ресурсы Azure через Dynatrace Smartscape и DQL. Пригодится при аудите сетевой топологии, проверке настроек безопасности и анализе инфраструктуры. CX Codex +1 2 000установок analyzing-azure-activity-logs-for-threats mahipal Гоняет KQL-запросы по журналам Azure Monitor и sign-in logs, чтобы найти подозрительные админские операции и аномальные входы. CX Codex +1 471установок

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

Весь набор →
wiki-architect Разбирает репозиторий и генерирует структуру документации с гайдами онбординга под разные роли. Пригодится, когда нужно составить план вики или понять архитектуру проекта. 8установок agent-framework-azure-ai-py Скилл помогает создавать постоянных агентов Azure AI Foundry на Python. Подходит для hosted tools, MCP-серверов и потоковых ответов. 8установок wiki-researcher Скилл ведёт многошаговое исследование кодовой базы: трассирует реальные пути вызовов и подкрепляет каждый вывод ссылкой на файл. 7установок azure-ai Подключает к агенту сервисы Azure: поиск по индексам, распознавание и синтез речи, OCR. Пригодится, когда проект уже живёт в Azure. 6установок frontend-ui-dark-ts Скилл для сборки тёмных React-интерфейсов на Tailwind CSS: тема, glassmorphism, анимации Framer Motion. Пригодится для дашбордов и админок. 5установок pydantic-models-py Скилл задаёт структуру моделей Pydantic v2 по шаблону из пяти вариантов: Base, Create, Update, Response и InDB. Пригодится, когда нужны схемы запросов и ответов API. 5установок zustand-store-ts Скилл задаёт шаблон стора Zustand на TypeScript: отдельные типы для состояния и действий, middleware subscribeWithSelector, селекторы. 3установок azure-resource-lookup Перечисляет и находит ресурсы Azure по подпискам и группам через Azure Resource Graph. Нужен, когда надо увидеть, что вообще развёрнуто. 2установок

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

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