Share via


MySQL için Azure Veritabanı için Microsoft Entra kimlik doğrulamasını ayarlama - Esnek Sunucu

ŞUNLAR IÇIN GEÇERLIDIR: MySQL için Azure Veritabanı - Esnek Sunucu

Bu öğreticide, esnek MySQL için Azure Veritabanı sunucu için Microsoft Entra kimlik doğrulamasını ayarlama gösterilmektedir.

Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:

  • Microsoft Entra Yönetici yapılandırın.
  • Microsoft Entra Id kullanarak esnek MySQL için Azure Veritabanı sunucuya Bağlan.

Önkoşullar

  • Etkin aboneliği olan bir Azure hesabı.

  • Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir Azure hesabı oluşturun.

    Dekont

    Ücretsiz Azure hesabıyla artık esnek MySQL için Azure Veritabanı sunucuyu 12 ay boyunca ücretsiz deneyebilirsiniz. Daha fazla bilgi için bkz. Esnek sunucuyu ücretsiz MySQL için Azure Veritabanı deneme.

  • Azure CLI'yi en son sürüme yükleyin veya yükseltin. Bkz. Azure CLI'yı yükleme.

Microsoft Entra Yönetici yapılandırma

Microsoft Entra Yönetici kullanıcısı oluşturmak için aşağıdaki adımları izleyin.

  • Azure portalında, Microsoft Entra Id için etkinleştirmek istediğiniz MySQL için Azure Veritabanı esnek sunucu örneğini seçin.

  • Güvenlik bölmesinin altında Kimlik Doğrulaması'nı seçin:Diagram of how to configure Microsoft Entra authentication.

  • Üç kimlik doğrulaması türü vardır:

    • Yalnızca MySQL kimlik doğrulaması – Varsayılan olarak, MySQL yerel parola karma yöntemini kullanarak kimlik doğrulaması gerçekleştiren yerleşik mysql_native_password kimlik doğrulama eklentisini kullanır

    • Yalnızca Microsoft Entra kimlik doğrulaması – Yalnızca bir Microsoft Entra hesabıyla kimlik doğrulamasına izin verir. mysql_native_password kimlik doğrulamasını devre dışı bırakır ve sunucu parametresini aad_auth_only açar

    • MySQL ve Microsoft Entra kimlik doğrulaması – Yerel bir MySQL parolası veya Microsoft Entra hesabı kullanarak kimlik doğrulamasına izin verir. Sunucu parametresi aad_auth_only KAPALI'yi kapatır

  • Kimlik – Kullanıcı tarafından atanan yönetilen kimliği seçin/ekleyin'i seçin. UMI'nin sunucu kimliği olarak Microsoft Graph'tan okumasına izin vermek için aşağıdaki izinler gereklidir. Alternatif olarak, UMI'ye Dizin Okuyucuları rolünü verin.

Önemli

Yalnızca bir Genel Yönetici istrator veya Privileged Role Yönetici istrator bu izinleri verebilir.

  • Microsoft Entra yöneticisi olmak için müşteri kiracısında geçerli bir Microsoft Entra kullanıcısı veya Microsoft Entra grubu seçin. Microsoft Entra kimlik doğrulama desteği etkinleştirildikten sonra Microsoft Entra Yönetici s, Microsoft Entra kullanıcılarını MySQL sunucusuna ekleme iznine sahip güvenlik sorumluları olarak eklenebilir.

    Dekont

    MySQL sunucusu başına yalnızca bir Microsoft Entra yöneticisi oluşturulabilir ve başka bir yönetici seçildiğinde sunucu için yapılandırılan mevcut Microsoft Entra yöneticisinin üzerine yazılır.

Kullanıcı tarafından atanan yönetilen kimliğe izin verme

Aşağıdaki örnek PowerShell betiği, UMI için gerekli izinleri verir. Bu örnek UMI'ye umiservertestizinler atar.

Betiği çalıştırmak için Genel Yönetici istrator veya Privileged Role Yönetici istrator rolüne sahip bir kullanıcı olarak oturum açmanız gerekir.

Betik, bir UMI'ye Microsoft Graph'a erişmek için , GroupMember.Read.Allve Application.Read.ALL izinleri verirUser.Read.All.

# Script to assign permissions to the UMI "umiservertest"

import-module AzureAD
$tenantId = '<tenantId>' # Your Azure AD tenant ID

Connect-AzureAD -TenantID $tenantId
# Log in as a user with a "Global Administrator" or "Privileged Role Administrator" role
# Script to assign permissions to an existing UMI 
# The following Microsoft Graph permissions are required: 
#   User.Read.All
#   GroupMember.Read.All
#   Application.Read.ALL

# Search for Microsoft Graph
$AAD_SP = Get-AzureADServicePrincipal -SearchString "Microsoft Graph";
$AAD_SP
# Use Microsoft Graph; in this example, this is the first element $AAD_SP[0]

#Output

#ObjectId                             AppId                                DisplayName
#--------                             -----                                -----------
#47d73278-e43c-4cc2-a606-c500b66883ef 00000003-0000-0000-c000-000000000000 Microsoft Graph
#44e2d3f6-97c3-4bc7-9ccd-e26746638b6d 0bf30f3b-4a52-48df-9a82-234910c4a086 Microsoft Graph #Change 

$MSIName = "<managedIdentity>";  # Name of your user-assigned
$MSI = Get-AzureADServicePrincipal -SearchString $MSIName 
if($MSI.Count -gt 1)
{ 
Write-Output "More than 1 principal found, please find your principal and copy the right object ID. Now use the syntax $MSI = Get-AzureADServicePrincipal -ObjectId <your_object_id>"

# Choose the right UMI

Exit
} 

# If you have more UMIs with similar names, you have to use the proper $MSI[ ]array number

# Assign the app roles

$AAD_AppRole = $AAD_SP.AppRoles | Where-Object {$_.Value -eq "User.Read.All"}
New-AzureADServiceAppRoleAssignment -ObjectId $MSI.ObjectId  -PrincipalId $MSI.ObjectId  -ResourceId $AAD_SP.ObjectId[0]  -Id $AAD_AppRole.Id 
$AAD_AppRole = $AAD_SP.AppRoles | Where-Object {$_.Value -eq "GroupMember.Read.All"}
New-AzureADServiceAppRoleAssignment -ObjectId $MSI.ObjectId  -PrincipalId $MSI.ObjectId  -ResourceId $AAD_SP.ObjectId[0]  -Id $AAD_AppRole.Id
$AAD_AppRole = $AAD_SP.AppRoles | Where-Object {$_.Value -eq "Application.Read.All"}
New-AzureADServiceAppRoleAssignment -ObjectId $MSI.ObjectId  -PrincipalId $MSI.ObjectId  -ResourceId $AAD_SP.ObjectId[0]  -Id $AAD_AppRole.Id

Betiğin son adımlarında, benzer adlara sahip daha fazla UMI'niz varsa, uygun $MSI[ ]array numarayı kullanmanız gerekir. $AAD_SP.ObjectId[0] bunun bir örneğidir.

Kullanıcı tarafından atanan yönetilen kimlik için izinleri denetleme

UMI izinlerini denetlemek için Azure portalına gidin. Microsoft Entra Id kaynağında Kurumsal uygulamalar'a gidin. Uygulama türü için Tüm Uygulamalar'ı seçin ve oluşturulan UMI'yi arayın.

UMI'yi seçin ve Güvenlik altındaki İzinler ayarlarına gidin.

UMI'ye izin verdikten sonra, bunlar sunucu kimliği olarak atanan UMI ile oluşturulan tüm sunucular için etkinleştirilir.

Microsoft Entra Id kullanarak esnek MySQL için Azure Veritabanı sunucuya Bağlan

1 - Microsoft Entra Id ile kimlik doğrulaması

Azure CLI aracını kullanarak Microsoft Entra Id ile kimlik doğrulaması yaparak başlayın.
(Bu adım Azure Cloud Shell'de gerekli değildir.)

  • az login komutunu kullanarak Azure hesabında oturum açın . Azure hesabınızın Abonelik Kimliği'ne başvuran ID özelliğine dikkat edin:

    az login
    

Komut, Microsoft Entra kimlik doğrulama sayfasına bir tarayıcı penceresi açar. Microsoft Entra kullanıcı kimliğinizi ve parolanızı vermeniz gerekir.

  • Birden çok aboneliğiniz varsa az account set komutunu kullanarak uygun aboneliği seçin:

    az account set --subscription \<subscription id\>
    

2 - Microsoft Entra erişim belirtecini alma

1. adımdaki Microsoft Entra kimliği doğrulanmış kullanıcı için esnek MySQL için Azure Veritabanı sunucuya erişmek üzere bir erişim belirteci almak için Azure CLI aracını çağırın.

  • Örnek (Genel Bulut için):

    az account get-access-token --resource https://ossrdbms-aad.database.windows.net
    
  • Yukarıdaki kaynak değeri tam olarak gösterildiği gibi belirtilmelidir. Diğer bulutlar için kaynak değeri aşağıdakiler kullanılarak aranabilir:

    az cloud show
    
  • Azure CLI sürüm 2.0.71 ve üzeri için komut, tüm bulutlar için aşağıdaki daha uygun sürümde belirtilebilir:

    az account get-access-token --resource-type oss-rdbms
    
  • PowerShell'i kullanarak erişim belirteci almak için aşağıdaki komutu kullanabilirsiniz:

    $accessToken = Get-AzAccessToken -ResourceUrl https://ossrdbms-aad.database.windows.net
    $accessToken.Token | out-file C:\temp\MySQLAccessToken.txt
    

Kimlik doğrulaması başarılı olduktan sonra Microsoft Entra Id bir erişim belirteci döndürür:

{
  "accessToken": "TOKEN",
  "expiresOn": "...",
  "subscription": "...",
  "tenant": "...",
  "tokenType": "Bearer"
}

Belirteç, kimliği doğrulanmış kullanıcı hakkındaki tüm bilgileri kodlayan ve MySQL için Azure Veritabanı hizmetini hedefleyen bir Temel 64 dizesidir.

Erişim belirteci geçerliliği 5 dakika ile 60 dakika arasında bir yerdedir. Esnek MySQL için Azure Veritabanı sunucuda oturum açma işlemini başlatmadan önce erişim belirtecini edinmenizi öneririz.

  • Belirteç geçerliliğini görmek için aşağıdaki PowerShell komutunu kullanabilirsiniz.
   $accessToken.ExpiresOn.DateTime

3 - MySQL ile oturum açmak için parola olarak belirteç kullanma

Bağlanırken erişim belirtecini MySQL kullanıcı parolası olarak kullanmanız gerekir. MySQL workbench gibi GUI istemcilerini kullanarak belirteci almak için yukarıda açıklanan yöntemi kullanabilirsiniz.

MySQL CLI kullanarak esnek MySQL için Azure Veritabanı sunucuya Bağlan

CLI kullanırken, bağlanmak için bu kısaltmayı kullanabilirsiniz:

Örnek (Linux/macOS):

mysql -h mydb.mysql.database.azure.com \
  --user user@tenant.onmicrosoft.com \
  --enable-cleartext-plugin \
  --password=`az account get-access-token --resource-type oss-rdbms --output tsv --query accessToken`

Örnek (PowerShell):

mysql -h mydb.mysql.database.azure.com \
  --user user@tenant.onmicrosoft.com \
  --enable-cleartext-plugin \
  --password=$(az account get-access-token --resource-type oss-rdbms --output tsv --query accessToken)


mysql -h mydb.mysql.database.azure.com \
  --user user@tenant.onmicrosoft.com \
  --enable-cleartext-plugin \
  --password=$((Get-AzAccessToken -ResourceUrl https://ossrdbms-aad.database.windows.net).Token)

MySQL Workbench kullanarak esnek MySQL için Azure Veritabanı sunucuya Bağlan

  • MySQL Workbench'i başlatın ve Veritabanı seçeneğini belirleyin, ardından veritabanına Bağlan'ı seçin.
  • Ana bilgisayar adı alanına MySQL FQDN'sini girin, örneğin, mysql.database.azure.com.
  • Kullanıcı adı alanına MySQL Microsoft Entra yönetici adını girin. Örneğin, user@tenant.onmicrosoft.com.
  • Parola alanında Kasada Depola'yı seçin ve dosyadan erişim belirtecini yapıştırın; örneğin, C:\temp\MySQLAccessToken.txt.
  • Gelişmiş sekmesini seçin ve Cleartext Authentication Eklentisini Etkinleştir'i işaretlediğinizden emin olun.
  • Veritabanına bağlanmak için Tamam'ı seçin.

Bağlanırken dikkat edilmesi gereken önemli noktalar

  • user@tenant.onmicrosoft.com , bağlanmaya çalıştığınız Microsoft Entra kullanıcısının veya grubunun adıdır
  • Microsoft Entra kullanıcı veya grup adının tam olarak yazıldığını kullandığınızdan emin olun
  • Microsoft Entra kullanıcı ve grup adları büyük/küçük harfe duyarlıdır
  • Grup olarak bağlanırken yalnızca grup adını kullanın (örneğin, GroupName)
  • Ad boşluk içeriyorsa, her boşluktan önce kullanarak \ boşluktan kaçın

Dekont

"enable-cleartext-plugin" ayarı – belirtecin karma olmadan sunucuya gönderildiğinden emin olmak için diğer istemcilerle benzer bir yapılandırma kullanmanız gerekir.

Artık Microsoft Entra kimlik doğrulamasını kullanarak MySQL esnek sunucunuzda kimliğiniz doğrulandı.

Diğer Microsoft Entra yönetici komutları

  • Sunucu Active Directory yöneticisini yönetme

    az mysql flexible-server ad-admin
    
  • Active Directory yöneticisi oluşturma

    az mysql flexible-server ad-admin create
    

    Örnek: 'john@contoso.com' kullanıcısı, yönetici kimliği '00000000-0000-0000-0000-000000000000000000' ve kimliği 'test-identity' ile Active Directory yöneticisi oluşturma

    az mysql flexible-server ad-admin create -g testgroup -s testsvr -u john@contoso.com -i 00000000-0000-0000-0000-000000000000 --identity test-identity
    
  • Active Directory yöneticisini silme

    az mysql flexible-server ad-admin delete
    

    Örnek: Active Directory yöneticisini silme

    az mysql flexible-server ad-admin delete -g testgroup -s testsvr
    
  • Tüm Active Directory yöneticilerini listeleme

    az mysql flexible-server ad-admin list
    

    Örnek: Active Directory yöneticilerini listeleme

    az mysql flexible-server ad-admin list -g testgroup -s testsvr
    
  • Active Directory yöneticisi alma

    az mysql flexible-server ad-admin show
    

    Örnek: Active Directory yöneticisini alma

    az mysql flexible-server ad-admin show -g testgroup -s testsvr
    
  • Active Directory yöneticisinin belirli koşulları karşılamasını bekleyin

    az mysql flexible-server ad-admin wait
    

    Örnekler:

    • Active Directory yöneticisi var olana kadar bekleyin
    az mysql flexible-server ad-admin wait -g testgroup -s testsvr --exists
    
    • Active Directory yöneticisinin silinmesini bekleyin
    az mysql flexible-server ad-admin wait -g testgroup -s testsvr –deleted
    

MySQL için Azure Veritabanı'da Microsoft Entra kullanıcıları oluşturma

MySQL için Azure Veritabanı veritabanınıza bir Microsoft Entra kullanıcısı eklemek için bağlandıktan sonra aşağıdaki adımları gerçekleştirin:

  1. İlk olarak Microsoft Entra kullanıcısının <user>@yourtenant.onmicrosoft.com Microsoft Entra kiracısında geçerli bir kullanıcı olduğundan emin olun.
  2. MySQL için Azure Veritabanı örneğinizde Microsoft Entra Yönetici kullanıcısı olarak oturum açın.
  3. MySQL için Azure Veritabanı'de kullanıcı <user>@yourtenant.onmicrosoft.com oluşturun.

Örnek:

CREATE AADUSER 'user1@yourtenant.onmicrosoft.com';

32 karakteri aşan kullanıcı adları için bunun yerine, bağlanırken kullanılacak bir diğer ad kullanmanız önerilir:

Örnek:

CREATE AADUSER 'userWithLongName@yourtenant.onmicrosoft.com' as 'userDefinedShortName';

Dekont

  1. MySQL baştaki ve sondaki boşlukları yoksayar, bu nedenle kullanıcı adının başında veya sonunda boşluk olmamalıdır.
  2. Microsoft Entra Id aracılığıyla kullanıcının kimliğini doğrulamak, kullanıcıya MySQL için Azure Veritabanı veritabanındaki nesnelere erişim izni vermez. Kullanıcıya gerekli izinleri el ile vermelisiniz.

MySQL için Azure Veritabanı'de Microsoft Entra grupları oluşturma

Bir Microsoft Entra grubunu veritabanınıza erişim için etkinleştirmek için kullanıcılar için tam mekanizmayı kullanın, bunun yerine grup adını belirtin:

Örnek:

CREATE AADUSER 'Prod_DB_Readonly';

Oturum açarken, grup üyeleri kişisel erişim belirteçlerini kullanır ancak kullanıcı adı olarak belirtilen grup adıyla oturum açar.

Uygulama sürücüleriyle uyumluluk

Sürücülerin çoğu desteklenir; ancak, belirtecin değiştirilmeden gönderilmesi için parolayı düz metin olarak göndermek için ayarları kullandığınızdan emin olun.

  • C/C++

    • libmysqlclient: Desteklenir
    • mysql-connector-c++: Desteklenir
  • Java

    • Bağlan or/J (mysql-connector-java): Desteklenir, ayarı kullanmalıdır useSSL
  • Python

    • Bağlan or/Python: Desteklenir
  • Ruby

    • mysql2: Desteklenir
  • .NET

    • mysql-connector-net: Desteklenir, mysql_clear_password için eklenti eklenmesi gerekir
    • mysql-net/MySql Bağlan or: Desteklenir
  • Node.js

    • mysqljs: Desteklenmez (belirteci düzeltme eki olmadan düz metin olarak göndermez)
    • node-mysql2: Desteklenir
  • Perl

    • DBD::mysql: Desteklenir
    • Net::MySQL: Desteklenmiyor
  • Go

    • go-sql-driver: Desteklenir, bağlantı dizesi ekleme ?tls=true&allowCleartextPasswords=true

Sonraki adımlar

  • Esnek MySQL için Azure Veritabanı sunucuyla Microsoft Entra kimlik doğrulaması kavramlarını gözden geçirin