[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-cff99a27-e32b-404a-80e2-429bffa27762":3,"$f4VOsp2IEV5ArOxmc3JlULi4E0U6OrukfoUiziDTc5aY":42},{"id":4,"title":5,"description":6,"categoryId":7,"moduleId":8,"tags":9,"prompt":10,"icon":11,"source":12,"sourceUrl":13,"authorId":14,"authorName":15,"isPublic":16,"stars":17,"runs":18,"createdAt":19,"updatedAt":19,"module":20,"category":27,"packages":33},"cff99a27-e32b-404a-80e2-429bffa27762","azure-keyvault-secrets-rust","Azure Key Vault Secrets SDK for Rust。用于存储和检索密钥、密码和API密钥。触发器：\"keyvault secrets rust\"、\"SecretClient rust\"、\"get secret rust\"、\"set secret rust\"。","cat_coding_backend","mod_coding","sickn33,coding","---\nname: azure-keyvault-secrets-rust\ndescription: 'Azure Key Vault Secrets SDK for Rust. Use for storing and retrieving secrets, passwords, and API keys. Triggers: \"keyvault secrets rust\", \"SecretClient rust\", \"get secret rust\", \"set secret rust\".'\nrisk: unknown\nsource: community\ndate_added: '2026-02-27'\n---\n\n# Azure Key Vault Secrets SDK for Rust\n\nClient library for Azure Key Vault Secrets — secure storage for passwords, API keys, and other secrets.\n\n## Installation\n\n```sh\ncargo add azure_security_keyvault_secrets azure_identity\n```\n\n## Environment Variables\n\n```bash\nAZURE_KEYVAULT_URL=https:\u002F\u002F\u003Cvault-name>.vault.azure.net\u002F\n```\n\n## Authentication\n\n```rust\nuse azure_identity::DeveloperToolsCredential;\nuse azure_security_keyvault_secrets::SecretClient;\n\nlet credential = DeveloperToolsCredential::new(None)?;\nlet client = SecretClient::new(\n    \"https:\u002F\u002F\u003Cvault-name>.vault.azure.net\u002F\",\n    credential.clone(),\n    None,\n)?;\n```\n\n## Core Operations\n\n### Get Secret\n\n```rust\nlet secret = client\n    .get_secret(\"secret-name\", None)\n    .await?\n    .into_model()?;\n\nprintln!(\"Secret value: {:?}\", secret.value);\n```\n\n### Set Secret\n\n```rust\nuse azure_security_keyvault_secrets::models::SetSecretParameters;\n\nlet params = SetSecretParameters {\n    value: Some(\"secret-value\".into()),\n    ..Default::default()\n};\n\nlet secret = client\n    .set_secret(\"secret-name\", params.try_into()?, None)\n    .await?\n    .into_model()?;\n```\n\n### Update Secret Properties\n\n```rust\nuse azure_security_keyvault_secrets::models::UpdateSecretPropertiesParameters;\nuse std::collections::HashMap;\n\nlet params = UpdateSecretPropertiesParameters {\n    content_type: Some(\"text\u002Fplain\".into()),\n    tags: Some(HashMap::from([(\"env\".into(), \"prod\".into())])),\n    ..Default::default()\n};\n\nclient\n    .update_secret_properties(\"secret-name\", params.try_into()?, None)\n    .await?;\n```\n\n### Delete Secret\n\n```rust\nclient.delete_secret(\"secret-name\", None).await?;\n```\n\n### List Secrets\n\n```rust\nuse azure_security_keyvault_secrets::ResourceExt;\nuse futures::TryStreamExt;\n\nlet mut pager = client.list_secret_properties(None)?.into_stream();\nwhile let Some(secret) = pager.try_next().await? {\n    let name = secret.resource_id()?.name;\n    println!(\"Secret: {}\", name);\n}\n```\n\n### Get Specific Version\n\n```rust\nuse azure_security_keyvault_secrets::models::SecretClientGetSecretOptions;\n\nlet options = SecretClientGetSecretOptions {\n    secret_version: Some(\"version-id\".into()),\n    ..Default::default()\n};\n\nlet secret = client\n    .get_secret(\"secret-name\", Some(options))\n    .await?\n    .into_model()?;\n```\n\n## Best Practices\n\n1. **Use Entra ID auth** — `DeveloperToolsCredential` for dev, `ManagedIdentityCredential` for production\n2. **Use `into_model()?`** — to deserialize responses\n3. **Use `ResourceExt` trait** — for extracting names from IDs\n4. **Handle soft delete** — deleted secrets can be recovered within retention period\n5. **Set content type** — helps identify secret format\n6. **Use tags** — for organizing and filtering secrets\n7. **Version secrets** — new values create new versions automatically\n\n## RBAC Permissions\n\nAssign these Key Vault roles:\n- `Key Vault Secrets User` — get and list\n- `Key Vault Secrets Officer` — full CRUD\n\n## Reference Links\n\n| Resource | Link |\n|----------|------|\n| API Reference | https:\u002F\u002Fdocs.rs\u002Fazure_security_keyvault_secrets |\n| Source Code | https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-for-rust\u002Ftree\u002Fmain\u002Fsdk\u002Fkeyvault\u002Fazure_security_keyvault_secrets |\n| crates.io | https:\u002F\u002Fcrates.io\u002Fcrates\u002Fazure_security_keyvault_secrets |\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.\n","","imported","https:\u002F\u002Fgithub.com\u002Fsickn33\u002Fantigravity-awesome-skills","user_system_seed","SkillOPIC",true,82,838,"2026-05-16 13:06:43",{"id":8,"name":21,"slug":22,"icon":23,"description":24,"sort":25,"createdAt":26},"编程开发","coding","mdi-code-braces","代码生成、调试、审查，提升开发效率",2,"2026-05-16 12:53:40",{"id":7,"name":28,"slug":29,"icon":30,"description":31,"moduleId":8,"sort":25,"skillCount":32,"createdAt":26},"后端开发","backend","mdi-server","API、数据库、服务端架构",296,[34],{"id":35,"skillId":4,"version":36,"fileName":37,"fileSize":38,"filePath":39,"fileHash":40,"manifest":41,"createdAt":19},"9447dbee-e2d0-49ab-9a58-47cc5c16c6b9","1.0.0","azure-keyvault-secrets-rust.zip",1693,"uploads\u002Fskills\u002Fcff99a27-e32b-404a-80e2-429bffa27762\u002Fazure-keyvault-secrets-rust.zip","12bbfe8e33fdb961ee99c0098ae199780ebf4e350a31c11ab62c63df21a66925","[{\"path\":\"SKILL.md\",\"isDirectory\":false,\"size\":3990}]",{"code":43,"message":44,"data":45},200,"success",{"items":46,"stats":47,"page":50},[],{"averageRating":48,"totalRatings":48,"ratingCounts":49},0,[48,48,48,48,48],{"limit":51,"offset":48,"hasMore":52,"nextOffset":51,"ratedOnly":16},15,false]