suchen
HeimBackend-EntwicklungPython-TutorialVerwendung 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
</displayname-of-appservice></displayname-of-appservice></displayname-of-appservice></displayname-of-appservice>

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.

Using Managed Identities for Secure Cross-Service Communication in Azure 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.



Auf GitHub ansehen



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!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Python: Ein tiefes Eintauchen in Zusammenstellung und InterpretationPython: Ein tiefes Eintauchen in Zusammenstellung und InterpretationMay 12, 2025 am 12:14 AM

PythonusesahybridmodelofCompilation und Interpretation: 1) thepythonInterPreterCompilessourceCodeIntoplatform-unintenpendentBytecode.2) Thepythonvirtualmachine (PVM) ThenexexexexecthisByTeCode, BalancingeAnsewusewithperformance.

Ist Python eine interpretierte oder eine kompilierte Sprache, und warum ist es wichtig?Ist Python eine interpretierte oder eine kompilierte Sprache, und warum ist es wichtig?May 12, 2025 am 12:09 AM

Pythonisbothinterpreted und kompiliert.1) ItscompiledToByteCodeForPortabilityAcrossplatform.2) thytecodeTheninterpreted, und das ErlaubnisfordyNamictyPingandRapidDevelopment zulässt, obwohl es sich

Für Schleife vs während der Schleife in Python: Schlüsselunterschiede erklärtFür Schleife vs während der Schleife in Python: Schlüsselunterschiede erklärtMay 12, 2025 am 12:08 AM

ForloopsaridealWenyouKnowtHenumberofofiterationssinadvance, während whileloopsarebetterForsituationswhereyouneedtoloopuntilaconditionismet.forloopsaremoreffictionAndable, geeigneter Verfaserungsverlust, whereaswiloopsofofermorcontrolanduseusefulfulf

Für und während Schleifen: ein praktischer LeitfadenFür und während Schleifen: ein praktischer LeitfadenMay 12, 2025 am 12:07 AM

Forloopsareusedwhenthenumberofiterationsisknowninadvance,whilewhileloopsareusedwhentheiterationsdependonacondition.1)Forloopsareidealforiteratingoversequenceslikelistsorarrays.2)Whileloopsaresuitableforscenarioswheretheloopcontinuesuntilaspecificcond

Python: Ist es wirklich interpretiert? Die Mythen entlarvenPython: Ist es wirklich interpretiert? Die Mythen entlarvenMay 12, 2025 am 12:05 AM

Pythonisnotpurelyinterpretiert; itusesahybridapproachofByteCodecompilation undruntimeinterpretation.1) PythoncompilessourcecodeIntoBytecode, die ISthenexecutBythepythonvirtualmachine (Pvm)

Python -Verkettungslisten mit demselben ElementPython -Verkettungslisten mit demselben ElementMay 11, 2025 am 12:08 AM

ToconcatenatelistsinpythonWithThesameElements, Verwendung: 1) Die Operatortokeepduplikate, 2) asettoremoveduplicate, or3) listenConpRectionforControloverDuplikate, EvermethodhasDifferentPerformanceInDormplocate.

Interpretiert gegen kompilierte Sprachen: Pythons PlatzInterpretiert gegen kompilierte Sprachen: Pythons PlatzMay 11, 2025 am 12:07 AM

PythonisaninterpretedLuage, OfferingaseofuseandflexibilitätsbutfacingPerformancelimitationsincriticalApplications.1) InterpretedLanguages ​​LikePythonexecutine-by-Line, ermöglicht, dassmediateFeedbackandrapidPrototyping.2) CompiledLanguagesslikec/C.5.

Für und während der Schleifen: Wann benutzt du jeweils in Python?Für und während der Schleifen: Wann benutzt du jeweils in Python?May 11, 2025 am 12:05 AM

Useforloopswhenthenumberofofiterationssisknowninadvance und wileloopswhenCiterationsDependonacondition.1) Forloopsardealforsequencelistorranges.2) Während

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

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

Heißer Artikel

Nordhold: Fusionssystem, erklärt
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
Mandragora: Flüstern des Hexenbaum
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

VSCode Windows 64-Bit-Download

VSCode Windows 64-Bit-Download

Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

mPDF

mPDF

mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

MantisBT

MantisBT

Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SAP NetWeaver Server-Adapter für Eclipse

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.