


Verwendung verwalteter Identitäten für sichere dienstübergreifende Kommunikation in Azure
Verwaltete Identitäten sind für die sichere dienstübergreifende Kommunikation in Azure unerlässlich. Sie machen die Verwaltung von Geheimnissen, Schlüsseln oder Verbindungszeichenfolgen überflüssig und ermöglichen eine nahtlose Integration von Anwendungskomponenten. In diesem Blog zeige ich, wie man mithilfe verwalteter Identitäten eine Azure SQL-Datenbank mit einem Python-Backend verbindet, das auf Azure App Service ausgeführt wird.
Microsoft-Authentifizierungsbibliothek
Um über Entra-Identitäten eine Verbindung zu Azure-Diensten herzustellen, benötigen Sie die Microsoft Authentication Library (MSAL). In diesem Beispiel verwende ich die Python-Bibliothek, aber keine Sorge, die MSAL existiert für jede große Programmiersprache.
import msal
Hier ist eine einfache Funktion zum Herstellen einer Verbindung mit einer Azure SQL-Datenbank:
def get_db_connection(): connection_string = f'DRIVER={{ODBC Driver 17 for SQL Server}};SERVER={server}.database.windows.net;PORT=1433;DATABASE={database};Authentication=ActiveDirectoryMsi' return pyodbc.connect(connection_string)
Wenn diese Voraussetzungen erfüllt sind, können Sie Datenbankverbindungen innerhalb Ihres Codes herstellen und Abfragen ausführen, ohne mit Geheimnissen oder Verbindungszeichenfolgen umgehen zu müssen.
Demo-Python-Backend
Zur Demonstration habe ich eine einfache Python-Flask-API erstellt, die Mitarbeiterdaten wie Name, Position und Gehalt zurückgibt. Beachten Sie, wie die Funktion get_db_connection() verwendet wird, um die Datenbankverbindung zu öffnen und die Daten abzufragen.
def get_employees(): conn = get_db_connection() cursor = conn.cursor() cursor.execute('SELECT ID, Name, Position, Salary FROM Employees') rows = cursor.fetchall() conn.close() # Convert data to a list of dictionaries. employees = [] for row in rows: employees.append({ 'ID': row.ID, 'Name': row.Name, 'Position': row.Position, 'Salary': row.Salary }) return jsonify(employees)
Dieser einfache Ansatz stellt sicher, dass Ihr Backend über verwaltete Identitäten sicher mit der Datenbank interagiert.
Docker-Datei
Wenn Sie Ihre Anwendung in Docker-Containern bereitstellen, finden Sie hier die Docker-Datei zum Installieren des ODBC-Treibers für SQL Server:
FROM python:3.13-slim COPY . /app WORKDIR /app # Install Microsoft ODBC Driver 17 for SQL Server and dependencies RUN apt-get update \ && apt-get install -y gnupg curl apt-transport-https \ && curl https://packages.microsoft.com/keys/microsoft.asc | tee /etc/apt/trusted.gpg.d/microsoft.asc \ && echo "deb [arch=amd64] https://packages.microsoft.com/debian/11/prod bullseye main" | tee /etc/apt/sources.list.d/mssql-release.list \ && apt-get update \ && ACCEPT_EULA=Y apt-get install -y msodbcsql17 unixodbc-dev \ && apt-get install -y build-essential \ && apt-get clean -y # Install Python dependencies RUN pip install -r requirements.txt EXPOSE 80 CMD ["gunicorn", "-w", "4", "-b", "0.0.0.0:80", "app:app"]
Dieses Setup stellt sicher, dass Ihr Container für eine sichere Verbindung mit Azure SQL bereit ist.
SQL Server- und Datenbankbereitstellung
Konfigurieren Sie bei der Bereitstellung eines Azure SQL-Servers die reine Azure AD-Authentifizierung. Dies ist eine Voraussetzung für die verwaltete Identität. Nachfolgend finden Sie die Bicep-Vorlage, die zum Bereitstellen des SQL-Servers und der Datenbank verwendet wird:
resource sqlServer 'Microsoft.Sql/servers@2023-08-01-preview' = { name: serverName location: location tags: { workload: 'Sample Backend with SQL Database' topic: 'SQL Server' environment: 'Production' } properties: { minimalTlsVersion: '1.2' administrators: { administratorType: 'ActiveDirectory' login: sqlAdminName sid: sqlAdminObjectId tenantId: tenantId principalType: principalType azureADOnlyAuthentication: azureADOnlyAuthentication } } } resource sqlDB 'Microsoft.Sql/servers/databases@2023-08-01-preview' = { parent: sqlServer name: sqlDBName location: location sku: { name: sqlDBSkuName tier: sqlDBSkuTier capacity: capacity } }
Diese Vorlage stellt sicher, dass die Datenbank sicher konfiguriert und einsatzbereit ist.
Gewähren von Datenbankrollen für verwaltete Identitäten
Damit Ihr App Service ohne Geheimnisse auf die Datenbank zugreifen kann, weisen Sie der verwalteten Identität die erforderlichen Datenbankrollen zu. Sie können diesen Schritt nicht mit Bicep oder Terraform ausführen. Erstellen Sie ein benutzerdefiniertes Skript oder greifen Sie über das Azure-Portal auf die Datenbank zu.
CREATE USER [<displayname-of-appservice>] FROM EXTERNAL PROVIDER; ALTER ROLE db_datareader ADD MEMBER [<displayname-of-appservice>]; ALTER ROLE db_datawriter ADD MEMBER [<displayname-of-appservice>]; ALTER ROLE db_ddladmin ADD MEMBER [<displayname-of-appservice>]; GO
Diese Rollen ermöglichen es der verwalteten Identität, nach Bedarf Lese-, Schreib- und Schemaänderungsvorgänge durchzuführen.
Öffentliche Vorlage auf GitHub
Den vollständigen Code, einschließlich CI/CD-Integration, finden Sie in der öffentlichen Vorlage auf GitHub. Dieses Repository enthält alles, was Sie zum Replizieren des in diesem Blog beschriebenen Setups benötigen.
Latzox
/
Schnellstart-Backend-mit-SQL-Datenbank
Eine schlanke Backend-Umgebung zum Testen neuer Anwendungsfunktionen. Es umfasst alles vom Hosting der App bis zur Verwaltung der Datenpersistenz und integriert CI/CD für einfaches Testen und Iteration.
Schnellstart-Backend mit SQL-Datenbankverbindung
Dieser Anwendungsfall umfasst die Bereitstellung eines Azure App Service mit einer Azure SQL-Datenbank, um eine schlanke Backend-Umgebung zum Testen neuer Anwendungsfunktionen bereitzustellen. Es umfasst alles vom Hosting der App bis zur Verwaltung der Datenpersistenz und integriert CI/CD für einfaches Testen und Iteration.
Ziele
- Stellen Sie ein skalierbares und sicheres Web-Backend auf Azure bereit, um neue Anwendungsfunktionen zu testen.
- Automatisieren Sie die Infrastrukturbereitstellung mit Bicep.
- Integrieren Sie die kontinuierliche Bereitstellung der Anwendung für häufige Tests und einfache Updates.
Komponentenübersicht
- Azure App Service – Stellen Sie eine einfache Backend-API bereit.
- Azure SQL-Datenbank – Richten Sie eine SQL-Datenbank für Persistenz ein.
- Azure Container Registry (optional) – Speichern Sie Containerbilder zur Versionierung (wenn Sie eine Containerversion verwenden).
- Kontinuierliche Integration/kontinuierliche Bereitstellung (CI/CD) – Automatisieren Sie die Bereitstellung mithilfe von GitHub-Aktionen.
Die Verwendung verwalteter Identitäten vereinfacht die dienstübergreifende Kommunikation und erhöht die Sicherheit, da keine Geheimnisse mehr erforderlich sind. Dieser Ansatz wird jedem dringend empfohlen, der sichere und skalierbare Anwendungen in Azure erstellt.
Das obige ist der detaillierte Inhalt vonVerwendung verwalteter Identitäten für sichere dienstübergreifende Kommunikation in Azure. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Wie kann man nicht erkannt werden, wenn Sie Fiddlereverywhere für Man-in-the-Middle-Lesungen verwenden, wenn Sie FiddLereverywhere verwenden ...

Fastapi ...

Verwenden Sie Python im Linux -Terminal ...

Wie lehre ich innerhalb von 10 Stunden die Grundlagen für Computer -Anfänger für Programmierungen? Wenn Sie nur 10 Stunden Zeit haben, um Computer -Anfänger zu unterrichten, was Sie mit Programmierkenntnissen unterrichten möchten, was würden Sie dann beibringen ...

Über Pythonasyncio ...

Verständnis der Anti-Crawling-Strategie von Investing.com Viele Menschen versuchen oft, Nachrichten von Investing.com (https://cn.investing.com/news/latest-news) zu kriechen ...

Laden Sie die Gurkendatei in Python 3.6 Umgebungsfehler: ModulenotFoundError: Nomodulenamed ...

Diskussion über die Gründe, warum Pipeline -Dateien beim Lernen und Verwendung von Scapy -Crawlern für anhaltende Datenspeicher nicht geschrieben werden können, können Sie auf Pipeline -Dateien begegnen ...
