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öneticisi'ni yapılandırın.
- Microsoft Entra Id kullanarak MySQL için Azure Veritabanı esnek sunucuya bağlanın.
Önkoşullar
Etkin aboneliği olan bir Azure hesabı.
Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir Azure hesabı oluşturun.
Not
Ü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 Admin'i yapılandırma
Microsoft Entra Admin 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:
Üç 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, kullanıcı tarafından atanan yönetilen kimliğe Dizin Okuyucuları rolünü verin.
- User.Read.All: Microsoft Entra kullanıcı bilgilerine erişime izin verir.
- GroupMember.Read.All: Microsoft Entra grup bilgilerine erişime izin verir.
- Application.Read.ALL: Microsoft Entra hizmet sorumlusu (uygulama) bilgilerine erişime izin verir.
Önemli
Yalnızca en az Ayrıcalıklı Rol Yöneticisi rolüne sahip bir kullanıcı 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ğrulaması desteği etkinleştirildikten sonra Microsoft Entra Yöneticileri, Microsoft Entra kullanıcılarını MySQL sunucusuna ekleme iznine sahip güvenlik sorumluları olarak eklenebilir.
Not
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 umiservertest
izinler atar.
Betiği çalıştırmak için Genel Yönetici veya Ayrıcalıklı Rol Yöneticisi 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.All
ve 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 -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 -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 -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 MySQL için Azure Veritabanı esnek sunucuya bağlanma
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 MySQL için Azure Veritabanı esnek sunucuya bağlanma
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 MySQL için Azure Veritabanı esnek sunucuya bağlanma
- 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
Not
"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:
- İ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. - MySQL için Azure Veritabanı örneğinizde Microsoft Entra Admin kullanıcısı olarak oturum açın.
- 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';
Not
- MySQL baştaki ve sondaki boşlukları yoksayar, bu nedenle kullanıcı adının başında veya sonunda boşluk olmamalıdır.
- 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
- Connector/J (mysql-connector-java): Desteklenir, ayarı kullanmalıdır
useSSL
- Connector/J (mysql-connector-java): Desteklenir, ayarı kullanmalıdır
Python
- Bağlayıcı/Python: Desteklenir
Ruby
- mysql2: Desteklenir
.NET
- mysql-connector-net: Desteklenir, mysql_clear_password için eklenti eklenmesi gerekir
- mysql-net/MySqlConnector: 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
- go-sql-driver: Desteklenir, bağlantı dizesi ekleme
PHP
mysqli uzantısı: Desteklenir
PDO_MYSQL sürücüsü: Desteklenir
Sonraki adımlar
- Esnek MySQL için Azure Veritabanı sunucuyla Microsoft Entra kimlik doğrulaması kavramlarını gözden geçirin