Hızlı Başlangıç: JavaScript için Azure Key Vault gizli istemci kitaplığı
JavaScript için Azure Key Vault gizli istemci kitaplığını kullanmaya başlayın. Azure Key Vault , gizli diziler için güvenli bir depo sağlayan 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 azure anahtar kasasından gizli dizi oluşturmayı, almayı ve silmeyi öğreneceksiniz
Key Vault istemci kitaplığı kaynakları:
API başvuru belgeleri | Kitaplık kaynak kodu | Paketi (npm)
Key Vault ve gizli diziler 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
- Mevcut bir Key Vault - şunu kullanarak bir anahtar oluşturabilirsiniz:
Bu hızlı başlangıçta Azure CLI çalıştırdığınız varsayılır.
Azure'da oturum açma
login
komutunu çalıştırın.az login
CLI varsayılan tarayıcınızı açabiliyorsa bunu yapar ve bir Azure oturum açma sayfası yükler.
Aksi takdirde adresinde bir tarayıcı sayfası https://aka.ms/devicelogin açın ve terminalinizde görüntülenen yetkilendirme kodunu girin.
Tarayıcıda hesabınızın kimlik bilgileriyle oturum açın.
Yeni Node.js uygulaması oluşturma
Anahtar kasanızı kullanan bir Node.js uygulaması oluşturun.
Terminalde adlı
key-vault-node-app
bir klasör oluşturun ve bu klasöre geçin:mkdir key-vault-node-app && cd key-vault-node-app
Node.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-secrets
Key Vault'ta kimlik doğrulaması yapmak için Azure Identity istemci kitaplığını @azure/kimlik paketini yükleyin.
npm install @azure/identity
Anahtar kasanıza erişim izni verme
Rol Tabanlı Erişim Denetimi (RBAC) aracılığıyla uygulamanıza anahtar kasanıza izin vermek için az role assignment create Azure CLI komutunu kullanarak bir rol atayın.
az role assignment create --role "Key Vault Secrets User" --assignee "<app-id>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"
App-id>, subscription-id>, <resource-group-name> ve <your-unique-keyvault-name> değerlerini gerçek değerlerinizle değiştirin<<. <app-id> , Azure AD'de kayıtlı uygulamanızın Uygulama (istemci) kimliğidir.
Ortam değişkenlerini belirleme
Bu uygulama anahtar kasası adını adlı KEY_VAULT_NAME
bir ortam değişkeni olarak kullanıyor.
set KEY_VAULT_NAME=<your-key-vault-name>
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 bkz . Yönetilen Kimliğe Genel Bakış.
Bu kodda, anahtar kasanızın adı biçiminde anahtar kasası URI'sini https://<your-key-vault-name>.vault.azure.net
oluşturmak için kullanılır. Anahtar kasasında kimlik doğrulaması hakkında daha fazla bilgi için bkz . Geliştirici Kılavuzu.
Kod örneği
Aşağıdaki kod örnekleri bir istemci oluşturma, gizli dizi ayarlama, gizli dizi alma ve gizli dizi 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() { // If you're using MSI, DefaultAzureCredential should "just work". // Otherwise, DefaultAzureCredential expects the following three environment variables: // - AZURE_TENANT_ID: The tenant ID in Azure Active Directory // - AZURE_CLIENT_ID: The application (client) ID registered in the AAD tenant // - AZURE_CLIENT_SECRET: The client secret for the registered application const credential = new DefaultAzureCredential(); const keyVaultName = process.env["KEY_VAULT_NAME"]; if(!keyVaultName) throw new Error("KEY_VAULT_NAME is empty"); const url = "https://" + keyVaultName + ".vault.azure.net"; const client = new SecretClient(url, 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.js
Oluş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: //YOUR-KEYVAULT-NAME.vault.azure.net/secrets/secret1637692472606/YOUR-VERSION", "vaultUrl": "https: //YOUR-KEYVAULT-NAME.vault.azure.net", "version": "YOUR-VERSION", "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: //YOUR-KEYVAULT-NAME.vault.azure.net/secrets/secret1637692472606/YOUR-VERSION", "vaultUrl": "https: //YOUR-KEYVAULT-NAME.vault.azure.net", "version": "YOUR-VERSION", "name": "secret1637692472606"
Uygulama Yapılandırması ile tümleştirme
Azure SDK, verilen Key Vault Gizli Dizi Kimliğini ayrıştırmak için parseKeyVaultSecretIdentifier adlı bir yardımcı yöntem sağlar. Key Vault'a Uygulama Yapılandırması başvuruları kullanıyorsanız bu gereklidir. Uygulama Yapılandırması, Key Vault Gizli Dizi Kimliğini depolar. Gizli dizi adını almak için bu kimliği ayrıştırmak için parseKeyVaultSecretIdentifier yöntemine ihtiyacınız vardır. Gizli dizi adını aldıktan sonra, bu hızlı başlangıçtaki kodu kullanarak geçerli gizli dizi değerini alabilirsiniz.
Sonraki adımlar
Bu hızlı başlangıçta bir anahtar kasası oluşturdunuz, bir gizli dizi depoladunuz ve bu gizli diziyi ele geçirtiniz. 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 Key Vault Gizli Dizilerine Genel Bakış
- Anahtar kasasına erişimin güvenliğini sağlama
- Azure Key Vault geliştirici kılavuzuna bakın
- Key Vault güvenliğine genel bakış'a göz atın