Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a cikk bemutatja, hogyan használható SQL Server Always Encrypted django-alkalmazásokkal a mssql-django háttérrendszeren keresztül. Az Always Encrypted oszlopszintű titkosítást biztosít, amely a bizalmas adatok védelmét szolgálja nyugalmi állapotban és átvitel közben.
Prerequisites
- Microsoft ODBC Driver 17 vagy 18 SQL Serverhez
- 2016-os vagy újabb SQL Server vagy Azure SQL Database
- A SQL Server oldalon konfigurált oszloptitkosítás (oszlop főkulcsa és oszloptitkosítási kulcs)
Hogyan működik?
Az Always Encryptedt az ODBC illesztőprogram-rétege kezeli, nem maga a Django. Ha engedélyezi az ColumnEncryption ODBC paramétert, az illesztőprogram automatikusan titkosítja és visszafejti az adatokat az alkalmazás és a SQL Server között áthaladva. A Django-modellek és -lekérdezések ugyanúgy működnek, függetlenül attól, hogy az oszlopok titkosítva vannak-e.
Windows-tanúsítványtároló
Ha az oszlopfőkulcsok a Windows tanúsítványtárolóban vannak, engedélyezze az Always Encrypted funkciót a(z) ColumnEncryption=Enabled hozzáadásával a(z) extra_params elemhez:
DATABASES = {
"default": {
"ENGINE": "mssql",
"NAME": "<your-database>",
"USER": "<your-username>",
"PASSWORD": "<your-password>",
"HOST": "<your-server>",
"PORT": "1433",
"OPTIONS": {
"driver": "ODBC Driver 18 for SQL Server",
"extra_params": "ColumnEncryption=Enabled",
},
},
}
Ez a megközelítés csak Windows működik.
Azure Key Vault ügyfélazonosítóval és titkos kóddal
Ha az oszlop főkulcsait Azure Key Vault tárolja, adja meg az alkalmazás hitelesítő adatait a következő helyenextra_params:
DATABASES = {
"default": {
"ENGINE": "mssql",
"NAME": "<your-database>",
"USER": "<your-username>",
"PASSWORD": "<your-password>",
"HOST": "<your-server>",
"PORT": "1433",
"OPTIONS": {
"driver": "ODBC Driver 18 for SQL Server",
"extra_params": (
"ColumnEncryption=Enabled;"
"KeyStoreAuthentication=KeyVaultClientSecret;"
"KeyStorePrincipalId=<application-client-id>;"
"KeyStoreSecret=<client-secret>"
),
},
},
}
Cserélje le a <application-client-id> és <client-secret> elemet az alkalmazásregisztrációjának Alkalmazás (ügyfél) azonosítója és ügyféltitok értékére.
Important
Ne kódolja a titkos kódokat a fájlban settings.py. Használjon környezeti változókat vagy titkos kulcskezelőt hitelesítő adatok megadásához futásidőben.
Azure Key Vault felügyelt identitással
Ha Azure (például Azure Virtual Machines vagy Azure App Service) fut, a felügyelt identitással érheti el a Azure Key Vault.
Rendszer által hozzárendelt felügyelt identitás
A paraméteren túl nincs szükség további konfigurációra KeyStoreAuthentication :
DATABASES = {
"default": {
"ENGINE": "mssql",
"NAME": "<your-database>",
"HOST": "<your-server>.database.windows.net",
"PORT": "1433",
"OPTIONS": {
"driver": "ODBC Driver 18 for SQL Server",
"extra_params": (
"ColumnEncryption=Enabled;"
"KeyStoreAuthentication=KeyVaultManagedIdentity"
),
},
},
}
Felhasználó által hozzárendelt felügyelt identitás
Adja meg a felügyelt identitás ügyfél-azonosítóját (más néven alkalmazásazonosítót):
DATABASES = {
"default": {
"ENGINE": "mssql",
"NAME": "<your-database>",
"HOST": "<your-server>.database.windows.net",
"PORT": "1433",
"OPTIONS": {
"driver": "ODBC Driver 18 for SQL Server",
"extra_params": (
"ColumnEncryption=Enabled;"
"KeyStoreAuthentication=KeyVaultManagedIdentity;"
"KeyStorePrincipalId=<managed-identity-client-id>"
),
},
},
}
Felügyelt identitás engedélyeinek megadása
Adjon hozzáférést a felügyelt identitásnak a Azure SQL-adatbázishoz:
CREATE USER [<identity-name>] FOR EXTERNAL PROVIDER; ALTER ROLE db_datareader ADD MEMBER [<identity-name>]; ALTER ROLE db_datawriter ADD MEMBER [<identity-name>]; GRANT VIEW ANY COLUMN MASTER KEY DEFINITION TO [<identity-name>]; GRANT VIEW ANY COLUMN ENCRYPTION KEY DEFINITION TO [<identity-name>];Adjon a felügyelt identitásnak hozzáférést az oszlop főkulcsát tároló Azure Key Vaulthoz az Always Encrypted Azure Key Vault dokumentációjában felsorolt engedélyekkel.
A Django kezelheti a titkosított táblákat
Az Always Encrypted és a Django használatakor először konfigurálja a titkosítási objektumokat SQL Server, majd futtassa az áttelepítéseket.
Ajánlott rendelés:
- Hozza létre az oszlopfőkulcsot (CMK) és az oszloptitkosítási kulcsot (CEK) az SQL Serveren vagy az Azure SQL-ben.
- Konfigurálja
ColumnEncryption=Enableda Django kapcsolati beállításait. - Django-migrációk futtatása.
- A céloszlopok titkosítása SQL Server Management Studio vagy T-SQL használatával.
Migrációk futtatása:
python manage.py migrate
mssql-django nem hozza létre vagy kezeli az Always Encrypted kulcs metaadatait. A kulcsok létrehozása és az oszloptitkosítási szabályzat továbbra is az SQL Server felügyeleti feladata marad.
Nem támogatott hitelesítési módszerek
A felhasználónév/jelszó és Azure Key Vault Interaktív hitelesítés nem támogatott az Always Encrypted kulcstároló-hozzáférés esetében.