Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
JavaScript için Azure Key Vault gizli istemci kitaplığını kullanmaya başlayın. Azure Key Vault gizli bilgileri güvenli bir şekilde depolayan bir bulut hizmetidir. Anahtarları, parolaları, sertifikaları ve diğer gizli dizileri güvenli bir şekilde depolayabilirsiniz. Azure anahtar kasaları Azure portalı aracılığıyla oluşturulup yönetilebilir. Bu hızlı başlangıçta, JavaScript istemci kitaplığını kullanarak bir Azure Anahtar Kasası'ndan gizli anahtarlar oluşturmayı, almayı ve silmeyi öğreneceksiniz.
Key Vault istemci kitaplığı kaynakları:
API referans belgeleri | Kitaplık kaynak kodu | Paket (npm)
Key Vault ve gizli bilgiler hakkında daha fazla bilgi için bkz:
Önkoşullar
- Azure aboneliği - ücretsiz bir abonelik oluşturun.
- Geçerli Node.js LTS.
- Azure CLI
Önkoşullar
- Azure aboneliği - ücretsiz bir abonelik oluşturun.
- Geçerli Node.js LTS.
- TypeScript 5+
- Azure CLI.
Bu hızlı başlangıçta Azure CLI çalıştırdığınız varsayılır.
Azure'da oturum açma
loginkomutunu çalıştırın.az loginCLI varsayılan tarayıcınızı açabiliyorsa bunu yapar ve bir Azure oturum açma sayfası yükler.
Aksi takdirde https://aka.ms/devicelogin adresinde bir tarayıcı sayfası açın ve terminalinizde görüntülenen yetkilendirme kodunu girin.
Tarayıcıda hesabınızın kimlik bilgileriyle oturum açın.
Kaynak grubu ve Key Vault oluşturma
az group createKaynak grubu oluşturmak için komutunu kullanın:az group create --name "myResourceGroup" --location "EastUS"İsterseniz "EastUS" değerini size daha yakın bir konuma değiştirebilirsiniz.
az keyvault createkullanarak anahtar kasası oluşturun.az keyvault create --name "<vault-name>" --resource-group "myResourceGroup" --enable-rbac-authorization true --enable-purge-protection trueAzure genelinde benzersiz bir adla
<vault-name>değiştirin. Genellikle kişisel veya şirket adınızı diğer numaralar ve tanımlayıcılarla birlikte kullanırsınız.
Anahtar kasanıza erişim izni verin
Rol Tabanlı Erişim Denetimi (RBAC) aracılığıyla anahtar kasanıza izinler almak için "Kullanıcı Asıl Adı"na (UPN) bir rol atamak üzere Azure CLI komutunu az role assignment create kullanın.
az role assignment create --role "Key Vault Secrets Officer" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/<vault-name>"
, <upn>ve <subscription-id> değerlerini gerçek değerlerinizle değiştirin<vault-name>. Eğer farklı bir kaynak grubu adı kullandıysanız, "myResourceGroup" yerine bunu koyun. UPN'niz genellikle bir e-posta adresi biçiminde olur (ör. username@domain.com).
Yeni Node.js uygulaması oluşturma
Anahtar kasanızı kullanan bir Node.js uygulaması oluşturun.
Terminalde adlı
key-vault-node-appbir klasör oluşturun ve bu klasöre geçin:mkdir key-vault-node-app && cd key-vault-node-appNode.js projesini başlatın:
npm init -y
Key Vault paketlerini yükleme
Terminali kullanarak Node.js için Azure Key Vault gizli dizileri istemci kitaplığını @azure/keyvault-secrets yükleyin.
npm install @azure/keyvault-secretsKey Vault'ta kimlik doğrulaması yapmak için Azure Identity istemci kitaplığını @azure/kimlik paketini yükleyin.
npm install @azure/identity
Ortam değişkenlerini belirleme
Bu uygulama, KEY_VAULT_URL adlı bir ortam değişkeni olarak anahtar kasası uç noktasını kullanıyor.
set KEY_VAULT_URL=<key-vault-endpoint>
Kimlik doğrulaması yapma ve istemci oluşturma
Çoğu Azure hizmeti için uygulama istekleri yetkilendirilmelidir.
Azure Identity istemci kitaplığı tarafından sağlanan DefaultAzureCredential yöntemini kullanmak, kodunuzda Azure hizmetlerine parolasız bağlantılar uygulamak için önerilen yaklaşımdır.
DefaultAzureCredential birden çok kimlik doğrulama yöntemini destekler ve çalışma zamanında hangi yöntemin kullanılacağını belirler. Bu yaklaşım, uygulamanızın ortama özgü kod uygulamadan farklı ortamlarda (yerel ve üretim) farklı kimlik doğrulama yöntemleri kullanmasını sağlar.
Bu hızlı başlangıçta, DefaultAzureCredential Azure CLI'da oturum açmış yerel geliştirme kullanıcısının kimlik bilgilerini kullanarak anahtar kasasında kimlik doğrulaması yapar. Uygulama Azure'a dağıtıldığında, aynı DefaultAzureCredential kod App Service, Sanal Makine veya diğer hizmetlere atanan yönetilen kimliği otomatik olarak bulabilir ve kullanabilir. Daha fazla bilgi için Yönetilen Kimliğe Genel Bakış'a bkz.
Bu kodda anahtar kasası istemcisini oluşturmak için anahtar kasanızın uç noktası kullanılır. Uç nokta formatı https://<vault-name>.vault.azure.net şeklinde görünür, ancak bağımsız bulutlar için değişebilir. Anahtar kasasında kimlik doğrulaması hakkında daha fazla bilgi için Geliştirici Kılavuzu'na bakın.
Kod örneği
Aşağıdaki kod örnekleri bir istemci oluşturmayı, gizli anahtar belirlemeyi, gizli anahtar almayı ve gizli anahtar silmeyi gösterir.
Bu kod aşağıdaki Key Vault Gizli Dizi sınıflarını ve yöntemlerini kullanır:
Uygulama çerçevesini ayarlama
Yeni metin dosyası oluşturun ve aşağıdaki kodu index.js dosyasına yapıştırın.
const { SecretClient } = require("@azure/keyvault-secrets"); const { DefaultAzureCredential } = require("@azure/identity"); async function main() { // DefaultAzureCredential automatically uses managed identity in Azure environments. // For local development, it uses credentials from Azure CLI, Azure PowerShell, or environment variables. // See: https://learn.microsoft.com/javascript/api/@azure/identity/defaultazurecredential const credential = new DefaultAzureCredential(); const keyVaultUrl = process.env["KEY_VAULT_URL"]; if(!keyVaultUrl) throw new Error("KEY_VAULT_URL is empty"); const client = new SecretClient(keyVaultUrl, credential); // Create a secret // The secret can be a string of any kind. For example, // a multiline text block such as an RSA private key with newline characters, // or a stringified JSON object, like `JSON.stringify({ mySecret: 'MySecretValue'})`. const uniqueString = new Date().getTime(); const secretName = `secret${uniqueString}`; const result = await client.setSecret(secretName, "MySecretValue"); console.log("result: ", result); // Read the secret we created const secret = await client.getSecret(secretName); console.log("secret: ", secret); // Update the secret with different attributes const updatedSecret = await client.updateSecretProperties(secretName, result.properties.version, { enabled: false }); console.log("updated secret: ", updatedSecret); // Delete the secret immediately without ability to restore or purge. await client.beginDeleteSecret(secretName); } main().catch((error) => { console.error("An error occurred:", error); process.exit(1); });
Örnek uygulamayı çalıştırın
Uygulamayı çalıştırın:
node index.jsOluşturma ve alma yöntemleri gizli dizi için tam bir JSON nesnesi döndürür:
{ "value": "MySecretValue", "name": "secret1637692472606", "properties": { "createdOn": "2021-11-23T18:34:33.000Z", "updatedOn": "2021-11-23T18:34:33.000Z", "enabled": true, "recoverableDays": 90, "recoveryLevel": "Recoverable+Purgeable", "id": "https://<vault-name>.vault.azure.net/secrets/secret1637692472606/e13f3558b4ca4363a8e402e11e7b193c", "vaultUrl": "https://<vault-name>.vault.azure.net", "version": "e13f3558b4ca4363a8e402e11e7b193c", "name": "secret1637692472606" } }Güncelleştirme yöntemi, özellik adı/değer çiftlerini döndürür:
"createdOn": "2021-11-23T18:34:33.000Z", "updatedOn": "2021-11-23T18:34:33.000Z", "enabled": true, "recoverableDays": 90, "recoveryLevel": "Recoverable+Purgeable", "id": "https://<vault-name>.vault.azure.net/secrets/secret1637692472606/e13f3558b4ca4363a8e402e11e7b193c", "vaultUrl": "https://<vault-name>.vault.azure.net", "version": "e13f3558b4ca4363a8e402e11e7b193c", "name": "secret1637692472606"
Yeni metin dosyası oluşturun ve aşağıdaki kodu index.ts dosyasına yapıştırın.
import { SecretClient, KeyVaultSecret, SecretProperties, } from "@azure/keyvault-secrets"; import { DefaultAzureCredential } from "@azure/identity"; import "dotenv/config"; // Passwordless credential const credential = new DefaultAzureCredential(); // Get Key Vault name from environment variables // such as `https://${keyVaultName}.vault.azure.net` const keyVaultUrl = process.env.KEY_VAULT_URL; if (!keyVaultUrl) throw new Error("KEY_VAULT_URL is empty"); function printSecret(secret: KeyVaultSecret): void { const { name, value, properties } = secret; const { enabled, expiresOn, createdOn } = properties; console.log("Secret: ", { name, value, enabled, expiresOn, createdOn }); } function printSecretProperties(secret: SecretProperties): void { const { name, enabled, expiresOn, createdOn } = secret; console.log("Secret: ", { name, enabled, expiresOn, createdOn }); } async function main(): Promise<void> { // Create a new SecretClient const client = new SecretClient(keyVaultUrl, credential); // Create a unique secret name const uniqueString = new Date().getTime().toString(); const secretName = `secret${uniqueString}`; // Create a secret const createSecretResult = await client.setSecret( secretName, "MySecretValue" ); printSecret(createSecretResult); // Get the secret by name const getSecretResult = await client.getSecret(secretName); printSecret(getSecretResult); // Update properties const updatedSecret = await client.updateSecretProperties( secretName, getSecretResult.properties.version, { enabled: false, } ); printSecretProperties(updatedSecret); // Delete secret (without immediate purge) const deletePoller = await client.beginDeleteSecret(secretName); await deletePoller.pollUntilDone(); } main().catch((error) => { console.error("An error occurred:", error); process.exit(1); });
Örnek uygulamayı çalıştırın
TypeScript uygulamasını oluşturun:
tscUygulamayı çalıştırın:
node index.jsOluşturma ve alma yöntemleri gizli dizi için tam bir JSON nesnesi döndürür:
{ "value": "MySecretValue", "name": "secret1637692472606", "properties": { "createdOn": "2021-11-23T18:34:33.000Z", "updatedOn": "2021-11-23T18:34:33.000Z", "enabled": true, "recoverableDays": 90, "recoveryLevel": "Recoverable+Purgeable", "id": "https://<vault-name>.vault.azure.net/secrets/secret1637692472606/e13f3558b4ca4363a8e402e11e7b193c", "vaultUrl": "https://<vault-name>.vault.azure.net", "version": "e13f3558b4ca4363a8e402e11e7b193c", "name": "secret1637692472606" } }Güncelleştirme yöntemi, özellik adı/değer çiftlerini döndürür:
"createdOn": "2021-11-23T18:34:33.000Z", "updatedOn": "2021-11-23T18:34:33.000Z", "enabled": true, "recoverableDays": 90, "recoveryLevel": "Recoverable+Purgeable", "id": "https://<vault-name>.vault.azure.net/secrets/secret1637692472606/e13f3558b4ca4363a8e402e11e7b193c", "vaultUrl": "https://<vault-name>.vault.azure.net", "version": "e13f3558b4ca4363a8e402e11e7b193c", "name": "secret1637692472606"
Uygulama Yapılandırması ile entegrasyon
Azure SDK, verilen Key Vault Gizli Dizi Kimliğini ayrıştırmak için parseKeyVaultSecretIdentifier adlı bir yardımcı yöntem sağlar. Bu, Uygulama Yapılandırması başvurularını Key Vault ile kullanıyorsanız gereklidir. Uygulama Yapılandırması, Key Vault Gizli Kimliği depolar. Gizli dizi adını almak için bu kimliği ayrıştırmak amacıyla parseKeyVaultSecretIdentifier yöntemine ihtiyacınız vardır. Gizli adı aldıktan sonra, bu hızlı başlangıç rehberindeki kodu kullanarak geçerli gizli değeri alabilirsiniz.
Sonraki adımlar
Bu hızlı başlangıçta bir anahtar deposu oluşturdunuz, bir gizli bilgi depoladınız ve bu gizli bilgiyi elde ettiniz. Key Vault ve uygulamalarınızla tümleştirme hakkında daha fazla bilgi edinmek için aşağıdaki makalelere geçin.
- Azure Key Vault'a Genel Bakış
- Azure Anahtar Kasası Sırlarına Genel Bakış Oku
- Anahtar kasasına erişimi güvenli hale getirme
- Sırlara özgü güvenlik en iyi uygulamalarını gözden geçirme
- Azure Key Vault geliştirici kılavuzuna bakın
- Key Vault güvenliğine genel bakış'a göz atın