Çoğu Azure hizmeti için uygulama isteklerinin kimlik doğrulaması anahtarlarla veya parolasız bağlantılarla yapılmalıdır. Geliştiricilerin anahtarları güvenli olmayan bir konumda asla kullanıma sunmaması için dikkatli olması gerekir. Anahtara erişim kazanan herkes hizmette kimlik doğrulaması yapabilir. Anahtarsız kimlik doğrulaması, depoacak anahtar (veya bağlantı dizesi) olmadığından hesap anahtarına göre gelişmiş yönetim ve güvenlik avantajları sunar.
Anahtarsız bağlantılar aşağıdaki adımlarla etkinleştirilir:
- Kimlik doğrulamanızı yapılandırın.
- Ortam değişkenlerini gerektiği gibi ayarlayın.
- Azure OpenAI istemci nesnesi oluşturmak için Bir Azure Kimlik kitaplığı kimlik bilgisi türü kullanın.
Kimlik Doğrulaması
Azure istemci kitaplıklarını kullanmak için Microsoft Entra Id kimlik doğrulaması gereklidir.
Kimlik doğrulaması, uygulamanın çalıştığı ortama göre farklılık gösterir:
Azure OpenAI Anahtarsız Yapı Taşı
Azure OpenAI Anahtarsız Yapı Taşı AI şablonunu keşfetmek için aşağıdaki bağlantıyı kullanın. Bu şablon, OpenAI API SDK'larına erişmek için anahtarsız (Microsoft Entra) kimlik doğrulaması için kullanıcı hesabı RBAC rol izninizi içeren bir Azure OpenAI hesabı sağlar.
Not
Bu makalede, makaledeki örnekler ve kılavuzlar için temel olarak bir veya daha fazla yapay zeka uygulaması şablonu kullanılır. Yapay zeka uygulama şablonları, yapay zeka uygulamalarınız için yüksek kaliteli bir başlangıç noktası sağlamaya yardımcı olan, bakımlı, kolay dağıtılan başvuru uygulamaları sağlar.
Yerel geliştirme için kimlik doğrulaması
Azure'da barındırılan ortamlar için kimlik doğrulaması
Azure'a dağıtılan uygulamalar için DefaultAzureCredential'ı yönetme hakkında bilgi edinin.
Azure'a dağıtılan uygulamalar için DefaultAzureCredential'ı yönetme hakkında bilgi edinin.
Azure'a dağıtılan uygulamalar için DefaultAzureCredential'ı yönetme hakkında bilgi edinin.
Azure'a dağıtılan uygulamalar için DefaultAzureCredential'ı yönetme hakkında bilgi edinin.
Azure'a dağıtılan uygulamalar için DefaultAzureCredential'ı yönetme hakkında bilgi edinin.
Azure OpenAI kullanımınıza yönelik rolü bulun. Bu rolü nasıl ayarlamak istediğinize bağlı olarak, ad veya kimlik gerekir.
| Rol adı |
Rol Kimliği |
| Azure CLI veya Azure PowerShell için rol adını kullanabilirsiniz. |
Bicep için rol kimliğine ihtiyacınız vardır. |
Rol ve kimlik seçmek için aşağıdaki tabloyu kullanın.
| Kullanım örneği |
Rol adı |
Rol Kimliği |
| Yardımcılar |
Cognitive Services OpenAI Contributor |
a001fd3d-188f-4b5d-821b-7da978bf7442 |
| Sohbet tamamlamaları |
Cognitive Services OpenAI User |
5e0bd9bd-7b93-4f28-af87-19fc36ad61bd |
Kullanılacak kimlik türünü seçin.
-
Kişisel kimlik: Azure'da oturum açmanıza bağlı kişisel kimliğiniz.
-
Yönetilen kimlik: Tarafından yönetilen ve Azure'da kullanılmak üzere oluşturulan bir kimlik. Yönetilen kimlik için kullanıcı tarafından atanan bir yönetilen kimlik oluşturun. Yönetilen kimliği oluşturduğunuzda, olarak
Client IDda bilinen öğesine ihtiyacınız vardırapp ID.
Kişisel kimliğinizi bulmak için aşağıdaki komutlardan birini kullanın. Sonraki adımda kimliği olarak <identity-id> kullanın.
Yerel geliştirme için, kendi kimlik kimliğinizi almak için aşağıdaki komutu kullanın. Bu komutu kullanmadan önce ile az login oturum açmanız gerekir.
az ad signed-in-user show \
--query id -o tsv
Yerel geliştirme için, kendi kimlik kimliğinizi almak için aşağıdaki komutu kullanın. Bu komutu kullanmadan önce ile Connect-AzAccount oturum açmanız gerekir.
(Get-AzContext).Account.ExtendedProperties.HomeAccountId.Split('.')[0]
Azure Geliştirici CLI ile dağıtılan Bicep kullanıldığında, dağıtımı gerçekleştiren kişi veya hizmetin kimliği parametresine ayarlanır.
Aşağıdaki main.parameters.json değişken, işlemi çalıştıran kimliğe ayarlanır.
"principalId": {
"value": "${AZURE_PRINCIPAL_ID}"
},
Azure'da kullanmak için Bicep dağıtım işleminin bir parçası olarak kullanıcı tarafından atanan yönetilen kimliği belirtin. İşlemi çalıştıran kimlikten ayrı olarak kullanıcı tarafından atanan bir yönetilen kimlik oluşturun.
resource userAssignedManagedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' = {
name: managedIdentityName
location: location
}
Rol tabanlı erişim denetimi (RBAC) rolünü kaynak grubunun kimliğine atayın.
RBAC aracılığıyla kaynağınıza kimlik izinleri vermek için az role assignment create Azure CLI komutunu kullanarak bir rol atayın.
az role assignment create \
--role "Cognitive Services OpenAI User" \
--assignee "<identity-id>" \
--scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>"
Azure OpenAI kaynağınıza RBAC aracılığıyla uygulama izinleri vermek için New-AzRoleAssignment Azure PowerShell cmdlet'ini kullanarak bir rol atayın.
New-AzRoleAssignment -ObjectId "<identity-id>" -RoleDefinitionName "Cognitive Services OpenAI User" -Scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>"
Kaynağı oluşturmak ve için kimlik doğrulamasını ayarlamak için identityIdaşağıdaki Azure OpenAI Bicep şablonunu kullanın. Bicep rol kimliğini gerektirir.
name Bu Bicep kod parçacığında gösterilen, Azure rolü değildir; Bu, Bicep dağıtımına özeldir.
// main.bicep
param environment string = 'production'
// USER ROLES
module openAiRoleUser 'core/security/role.bicep' = {
scope: openAiResourceGroup
name: 'openai-role-user'
params: {
principalId: (environment == 'development') ? principalId : userAssignedManagedIdentity
principalType: (environment == 'development') ? 'User' : 'ServicePrincipal'
roleDefinitionId: '5e0bd9bd-7b93-4f28-af87-19fc36ad61bd'
}
}
Aşağıdaki genel Bicep, herhangi bir rol oluşturmak için ' main.bicep den çağrılır.
// core/security/role.bicep
metadata description = 'Creates a role assignment for an identity.'
param principalId string // passed in from main.bicep identityId
@allowed([
'Device'
'ForeignGroup'
'Group'
'ServicePrincipal'
'User'
])
param principalType string = 'ServicePrincipal'
param roleDefinitionId string
resource role 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: guid(subscription().id, resourceGroup().id, principalId, roleDefinitionId)
properties: {
principalId: principalId
principalType: principalType
roleDefinitionId: resourceId('Microsoft.Authorization/roleDefinitions', roleDefinitionId)
}
}
Uygun olduğunda , <identity-id>ve <subscription-id> değerlerini gerçek değerlerinizle değiştirin<resource-group-name>.
Azure OpenAI'ye bağlanabilmek için kodunuzun kaynak uç noktanızı tanıması gerekir, ayrıca diğer ortam değişkenlerine de ihtiyaç duyabilir.
Azure OpenAI uç noktanız için bir ortam değişkeni oluşturun.
-
AZURE_OPENAI_ENDPOINT: Bu URL, Azure OpenAI kaynağınızın erişim noktasıdır.
Uygulamanızın çalıştığı konuma göre ortam değişkenleri oluşturun:
| Konum |
Kimlik |
Açıklama |
| Yerel |
Bireysel |
Kişisel kimliğinizle yerel çalışma zamanlarında, kimlik bilgilerinizi bir araçla oluşturmak için oturum açın. |
| Azure bulut |
Kullanıcı tarafından atanan yönetilen kimlik |
Kimlik doğrulaması için kullanıcı tarafından atanan yönetilen kimliğin istemci kimliğini içeren bir AZURE_CLIENT_ID ortam değişkeni oluşturun. |
Azure Identity istemci kitaplığını yükleme
Azure Identity istemci kitaplığını yüklemek için aşağıdaki bağlantıyı kullanın.
Java Azure Identity istemci kitaplığını aşağıdaki POM dosyasıyla yükleyin:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>1.18.2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
DefaultAzureCredential kullan
Azure Kimlik kitaplığı DefaultAzureCredential , müşterinin aynı kodu yerel geliştirme ortamında ve Azure Bulut'ta çalıştırmasına olanak tanır.
.NET DefaultAzureCredential hakkında daha fazla bilgi için DefaultAzureCredential genel bakış bölümüne bakın.
Kullanıcı tarafından atanan yönetilen kimliğin istemci kimliğini ayarlamak için aşağıdaki yaklaşımlardan birini uygulayın:
ortam değişkenini AZURE_CLIENT_IDayarlayın. parametresiz oluşturucu DefaultAzureCredential , varsa bu ortam değişkeninin değerini kullanır.
using Azure;
using Azure.AI.OpenAI;
using Azure.Identity;
using System;
using static System.Environment;
string endpoint = GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT");
OpenAIClient client = new(new Uri(endpoint), new DefaultAzureCredential());
üzerinde DefaultAzureCredentialOptions özelliğini ayarlayın.
using Azure;
using Azure.AI.OpenAI;
using Azure.Identity;
using System;
using static System.Environment;
string endpoint = GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT");
var credential = new DefaultAzureCredential(
new DefaultAzureCredentialOptions
{
ManagedIdentityClientId = "<user_assigned_client_id>"
});
OpenAIClient client = new(new Uri(endpoint), credential);
Go DefaultAzureCredential hakkında daha fazla bilgi için DefaultAzureCredential genel bakış bölümüne bakın.
import (
"log"
"github.com/Azure/azure-sdk-for-go/sdk/ai/azopenai"
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
)
func main() {
dac, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
log.Fatalf("ERROR: %s", err)
}
client, err := azopenai.NewClient(os.Getenv("AZURE_OPENAI_ENDPOINT"), dac, nil)
if err != nil {
log.Fatalf("ERROR: %s", err)
}
_ = client
}
Java için DefaultAzureCredential hakkında daha fazla bilgi için DefaultAzureCredential genel bakış bölümüne bakın.
Kullanıcı tarafından atanan yönetilen kimliğin istemci kimliğini ayarlamak için aşağıdaki yaklaşımlardan birini uygulayın:
ortam değişkenini AZURE_CLIENT_IDayarlayın. parametresiz oluşturucu DefaultAzureCredential , varsa bu ortam değişkeninin değerini kullanır.
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.ai.openai.OpenAIClient;
import com.azure.ai.openai.OpenAIClientBuilder;
String endpoint = System.getenv("AZURE_OPENAI_ENDPOINT");
DefaultAzureCredential credential = new DefaultAzureCredentialBuilder().build();
OpenAIClient client = new OpenAIClientBuilder()
.credential(credential)
.endpoint(endpoint)
.buildClient();
Kullanıcı tarafından atanan belirli bir yönetilen kimliği istemci kimliğiyle yapılandırmak için DefaultAzureCredential kullanarak DefaultAzureCredentialBuilder atayın.
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.ai.openai.OpenAIClient;
import com.azure.ai.openai.OpenAIClientBuilder;
String endpoint = System.getenv("AZURE_OPENAI_ENDPOINT");
String userAssignedClientId = "<your managed identity client ID>";
TokenCredential dacWithUserAssignedManagedIdentity
= new DefaultAzureCredentialBuilder().managedIdentityClientId(userAssignedClientId).build();
OpenAIClient client = new OpenAIClientBuilder()
.credential(dacWithUserAssignedManagedIdentity)
.endpoint(endpoint)
.buildClient();
JavaScript için DefaultAzureCredential hakkında daha fazla bilgi için DefaultAzureCredential genel bakış bölümüne bakın.
Kullanıcı tarafından atanan yönetilen kimliğin istemci kimliğini ayarlamak için aşağıdaki yaklaşımlardan birini uygulayın:
ortam değişkenini AZURE_CLIENT_IDayarlayın. parametresiz oluşturucu DefaultAzureCredential , varsa bu ortam değişkeninin değerini kullanır.
import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity";
import { AzureOpenAI } from "openai";
const credential = new DefaultAzureCredential();
const scope = "https://cognitiveservices.azure.com/.default";
const azureADTokenProvider = getBearerTokenProvider(credential, scope);
const endpoint = process.env["AZURE_OPENAI_ENDPOINT"] || "<endpoint>";
const deployment = "<your Azure OpenAI deployment name>";
const apiVersion = "2024-10-21";
const options = { azureADTokenProvider, deployment, apiVersion, endpoint }
const client = new AzureOpenAI(options);
Kullanıcı tarafından atanan belirli bir yönetilen kimliği, istemci kimliğiyle yapılandırmak amacıyla DefaultAzureCredential parametresini kullanarak managedIdentityClientId ile atayın.
import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity";
import { AzureOpenAI } from "openai";
const managedIdentityClientId = "<your managed identity client ID>";
const credential = new DefaultAzureCredential({
managedIdentityClientId: managedIdentityClientId,
});
const scope = "https://cognitiveservices.azure.com/.default";
const azureADTokenProvider = getBearerTokenProvider(credential, scope);
const endpoint = process.env["AZURE_OPENAI_ENDPOINT"] || "<endpoint>";
const deployment = "<your Azure OpenAI deployment name>";
const apiVersion = "2024-10-21";
const options = { azureADTokenProvider, deployment, apiVersion, endpoint }
const client = new AzureOpenAI(options);
Python DefaultAzureCredential hakkında daha fazla bilgi için DefaultAzureCredential genel bakış bölümüne bakın.
Kullanıcı tarafından atanan yönetilen kimliğin istemci kimliğini ayarlamak için aşağıdaki yaklaşımlardan birini uygulayın:
ortam değişkenini AZURE_CLIENT_IDayarlayın. parametresiz oluşturucu DefaultAzureCredential , varsa bu ortam değişkeninin değerini kullanır.
import openai
from azure.identity import DefaultAzureCredential, get_bearer_token_provider
token_provider = get_bearer_token_provider(DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default")
openai_client = openai.AzureOpenAI(
api_version=os.getenv("AZURE_OPENAI_VERSION"),
azure_endpoint=os.getenv("AZURE_OPENAI_ENDPOINT"),
azure_ad_token_provider=token_provider
)
Kullanıcı tarafından atanan belirli bir yönetilen kimliği, istemci kimliğiyle yapılandırmak amacıyla DefaultAzureCredential parametresini kullanarak managed_identity_client_id ile atayın.
import openai
from azure.identity import DefaultAzureCredential, get_bearer_token_provider
user_assigned_client_id = "<your managed identity client ID>"
credential = DefaultAzureCredential(
managed_identity_client_id=user_assigned_client_id
)
token_provider = get_bearer_token_provider(credential, "https://cognitiveservices.azure.com/.default")
openai_client = openai.AzureOpenAI(
api_version=os.getenv("AZURE_OPENAI_VERSION"),
azure_endpoint=os.getenv("AZURE_OPENAI_ENDPOINT"),
azure_ad_token_provider=token_provider
)
Kaynaklar