Megosztás a következőn keresztül:


Node.js-alkalmazás migrálása jelszó nélküli kapcsolatok használatára az Azure SQL Database-lel

A következőre vonatkozik: Azure SQL Database

Az Azure SQL Database-be irányuló alkalmazáskéréseket hitelesíteni kell. Bár az Azure SQL Database-hez való hitelesítésnek több lehetősége is van, lehetőség szerint fontossági sorrendbe kell helyeznie a jelszó nélküli kapcsolatokat az alkalmazásokban. A jelszavakat vagy titkos kulcsokat használó hagyományos hitelesítési módszerek biztonsági kockázatokat és bonyodalmakat okoznak. Látogasson el az Azure Services Hub jelszó nélküli kapcsolataira, és tudjon meg többet a jelszó nélküli kapcsolatokra való áttérés előnyeiről.

Az alábbi oktatóanyag bemutatja, hogyan migrálhat egy meglévő Node.js-alkalmazást, hogy felhasználónév és jelszó helyett jelszó nélküli kapcsolatokat használjon az Azure SQL Database-hez való csatlakozáshoz.

Az Azure SQL Database konfigurálása

A jelszó nélküli kapcsolatok Microsoft Entra-hitelesítéssel csatlakoznak az Azure-szolgáltatásokhoz, beleértve az Azure SQL Database-t is. A Microsoft Entra-hitelesítéssel központi helyen kezelheti az identitásokat az engedélykezelés egyszerűsítése érdekében. További információ a Microsoft Entra-hitelesítés Azure SQL Database-hez való konfigurálásáról:

Ebben a migrálási útmutatóban győződjön meg arról, hogy rendelkezik egy Microsoft Entra-rendszergazdával az Azure SQL Database-hez.

  1. Lépjen a logikai kiszolgáló Microsoft Entra oldalára.

  2. Válassza a Rendszergazda beállítása lehetőséget a Microsoft Entra ID úszó menü megnyitásához.

  3. A Microsoft Entra ID úszó menüjében keresse meg a rendszergazdaként hozzárendelni kívánt felhasználót.

  4. Válassza ki a felhasználót, és válassza a Kiválasztás lehetőséget.

    A screenshot showing how to enable Microsoft Entra admin.

A helyi fejlesztési környezet konfigurálása

A jelszó nélküli kapcsolatok úgy konfigurálhatók, hogy helyi és Azure-beli környezetekben is működjenek. Ebben a szakaszban konfigurációkat alkalmaz, amelyek lehetővé teszik az egyes felhasználók számára, hogy helyi fejlesztés céljából hitelesítsék magukat az Azure SQL Database-ben.

Bejelentkezés az Azure-ba

A helyi fejlesztéshez győződjön meg arról, hogy ugyanazzal az Azure AD-fiókkal jelentkezett be, amellyel hozzá szeretne férni az Azure SQL Database-hez. A hitelesítést olyan népszerű fejlesztői eszközökkel végezheti el, mint az Azure CLI vagy az Azure PowerShell. A hitelesítéshez használható fejlesztői eszközök különböző nyelveken eltérőek lehetnek.

Jelentkezzen be az Azure-ba az Azure CLI-vel a következő paranccsal:

az login

Adatbázis-felhasználó létrehozása és szerepkörök hozzárendelése

Hozzon létre egy felhasználót az Azure SQL Database-ben. A felhasználónak meg kell felelnie annak az Azure-fióknak, amelyet a helyi bejelentkezéshez használt az Azure-ba való bejelentkezéshez.

  1. Az Azure Portalon keresse meg az SQL-adatbázist, és válassza a Lekérdezésszerkesztő (előzetes verzió) lehetőséget.

  2. Válassza a Folytatás lehetőséget <your-username> a képernyő jobb oldalán az adatbázisba való bejelentkezéshez a fiókjával.

  3. A lekérdezésszerkesztő nézetben futtassa a következő T-SQL-parancsokat:

    CREATE USER [user@domain] FROM EXTERNAL PROVIDER;
    ALTER ROLE db_datareader ADD MEMBER [user@domain];
    ALTER ROLE db_datawriter ADD MEMBER [user@domain];
    ALTER ROLE db_ddladmin ADD MEMBER [user@domain];
    GO
    

    A screenshot showing how to use the Azure Query editor.

    A parancsok futtatása az SQL DB közreműködői szerepkörét rendeli hozzá a megadott fiókhoz. Ez a szerepkör lehetővé teszi az identitás számára az adatbázis adatainak és sémájának olvasását, írását és módosítását. A hozzárendelt szerepkörökről további információt a Rögzített adatbázis szerepkörök című témakörben talál.

A helyi kapcsolat konfigurációjának frissítése

  1. Hozzon létre környezeti beállításokat az alkalmazáshoz.

    AZURE_SQL_SERVER=<YOURSERVERNAME>.database.windows.net
    AZURE_SQL_DATABASE=<YOURDATABASENAME>
    AZURE_SQL_PORT=1433
    
  2. A Node.js SQL Driver használatával az Azure SQL Database-hez csatlakozó meglévő alkalmazáskód – a tedious továbbra is használ jelszó nélküli kapcsolatokat kisebb módosításokkal. A felhasználó által hozzárendelt felügyelt identitás használatához adja át a tulajdonságokat és options.clientId a authentication.type tulajdonságokat.

    import sql from 'mssql';
    
    // Environment settings - no user or password
    const server = process.env.AZURE_SQL_SERVER;
    const database = process.env.AZURE_SQL_DATABASE;
    const port = parseInt(process.env.AZURE_SQL_PORT);
    
    // Passwordless configuration
    const config = {
        server,
        port,
        database,
        authentication: {
            type: 'azure-active-directory-default',
        },
        options: {
            encrypt: true,
            clientId: process.env.AZURE_CLIENT_ID  // <----- user-assigned managed identity        
        }
    };
    
    // Existing applicaton code
    export default class Database {
        config = {};
        poolconnection = null;
        connected = false;
    
        constructor(config) {
            this.config = config;
            console.log(`Database: config: ${JSON.stringify(config)}`);
        }
    
        async connect() {
            try {
                console.log(`Database connecting...${this.connected}`);
                if (this.connected === false) {
                    this.poolconnection = await sql.connect(this.config);
                    this.connected = true;
                    console.log('Database connection successful');
                } else {
                    console.log('Database already connected');
                }
            } catch (error) {
                console.error(`Error connecting to database: ${JSON.stringify(error)}`);
            }
        }
    
        async disconnect() {
            try {
                this.poolconnection.close();
                console.log('Database connection closed');
            } catch (error) {
                console.error(`Error closing database connection: ${error}`);
            }
        }
    
        async executeQuery(query) {
            await this.connect();
            const request = this.poolconnection.request();
            const result = await request.query(query);
    
            return result.rowsAffected[0];
        }
    }
    
    const databaseClient = new Database(config);
    const result = await databaseClient.executeQuery(`select * from mytable where id = 10`);
    

    A AZURE_CLIENT_ID környezeti változó az oktatóanyag későbbi részében jön létre.

Az alkalmazás tesztelése

Futtassa az alkalmazást helyileg, és ellenőrizze, hogy az Azure SQL Database-hez való kapcsolatok a várt módon működnek-e. Ne feledje, hogy az Azure-felhasználók és szerepkörök módosításainak az Azure-környezetben való propagálása több percet is igénybe vehet. Az alkalmazás mostantól úgy van konfigurálva, hogy helyileg fusson anélkül, hogy a fejlesztőknek titkos kulcsokat kellene kezelnie az alkalmazásban.

Az Azure-beli üzemeltetési környezet konfigurálása

Miután az alkalmazás konfigurálva lett a jelszó nélküli kapcsolatok helyi használatára, ugyanaz a kód hitelesíthető az Azure SQL Database-ben az Azure-ban való üzembe helyezés után. Az alábbi szakaszok bemutatják, hogyan konfigurálhat egy üzembe helyezett alkalmazást az Azure SQL Database-hez felügyelt identitással való csatlakozáshoz. A felügyelt identitások automatikusan felügyelt identitást biztosítanak a Microsoft Entra-azonosítóban (korábbi nevén Azure Active Directory) az alkalmazások számára a Microsoft Entra-hitelesítést támogató erőforrásokhoz való csatlakozáshoz. További információ a felügyelt identitásokról:

A felügyelt identitás létrehozása

Hozzon létre egy felhasználó által hozzárendelt felügyelt identitást az Azure Portal vagy az Azure CLI használatával. Az alkalmazás az identitás használatával hitelesíti magát más szolgáltatásokban.

  1. Az Azure Portal tetején keressen felügyelt identitásokat. Válassza ki a felügyelt identitások eredményét.
  2. Válassza a +Létrehozás lehetőséget a Felügyelt identitások áttekintő oldal tetején.
  3. Az Alapok lapon adja meg a következő értékeket:
    • Előfizetés: Válassza ki a kívánt előfizetést.
    • Erőforráscsoport: Válassza ki a kívánt erőforráscsoportot.
    • Régió: Válasszon ki egy régiót a tartózkodási helyéhez közel.
    • Név: Adjon meg egy felismerhető nevet az identitásának, például a MigrationIdentity nevet.
  4. Válassza a Véleményezés + létrehozás lehetőséget a lap alján.
  5. Amikor az ellenőrzés befejeződött, válassza a Létrehozás lehetőséget. Az Azure létrehoz egy új, felhasználó által hozzárendelt identitást.

Az erőforrás létrehozása után válassza az Ugrás az erőforrásra lehetőséget a felügyelt identitás részleteinek megtekintéséhez.

A screenshot showing how to create a managed identity using the Azure portal.

Felügyelt identitás társítása a webalkalmazással

Konfigurálja a webalkalmazást a létrehozott felhasználó által hozzárendelt felügyelt identitás használatára.

Hajtsa végre az alábbi lépéseket az Azure Portalon a felhasználó által hozzárendelt felügyelt identitás alkalmazáshoz való társításához. Ugyanezek a lépések a következő Azure-szolgáltatásokra vonatkoznak:

  • Azure Spring Apps
  • Azure Container-alkalmazások
  • Azure-beli virtuális gépek
  • Azure Kubernetes Service
  • Lépjen a webalkalmazás áttekintő oldalára.
  1. Válassza az Identitás lehetőséget a bal oldali navigációs sávon.

  2. Az Identitás lapon váltson a Felhasználó által hozzárendelt lapra.

  3. Válassza a + Hozzáadás lehetőséget a Felhasználó által hozzárendelt felügyelt identitás hozzáadása úszó panel megnyitásához.

  4. Válassza ki az identitás létrehozásához korábban használt előfizetést.

  5. Keresse meg a MigrationIdentity nevet, és válassza ki a keresési eredmények közül.

  6. A Hozzáadás gombra kattintva társíthatja az identitást az alkalmazással.

    A screenshot showing how to assign a managed identity.

Adatbázis-felhasználó létrehozása az identitáshoz és szerepkörök hozzárendelése

Hozzon létre egy SQL-adatbázis-felhasználót, amely visszaképzhető a felhasználó által hozzárendelt felügyelt identitásra. Rendelje hozzá a szükséges SQL-szerepköröket a felhasználóhoz, hogy lehetővé tegye az alkalmazás számára az adatbázis adatainak és sémájának olvasását, írását és módosítását.

  1. Az Azure Portalon keresse meg az SQL-adatbázist, és válassza a Lekérdezésszerkesztő (előzetes verzió) lehetőséget.

  2. Válassza a Folytatás lehetőséget <username> a képernyő jobb oldalán az adatbázisba való bejelentkezéshez a fiókjával.

  3. A lekérdezésszerkesztő nézetben futtassa a következő T-SQL-parancsokat:

    CREATE USER [user-assigned-identity-name] FROM EXTERNAL PROVIDER;
    ALTER ROLE db_datareader ADD MEMBER [user-assigned-identity-name];
    ALTER ROLE db_datawriter ADD MEMBER [user-assigned-identity-name];
    ALTER ROLE db_ddladmin ADD MEMBER [user-assigned-identity-name];
    GO
    

    A screenshot showing how to use the Azure Query editor to create a SQL user for a managed identity.

    A parancsok futtatása az SQL DB közreműködői szerepkörét rendeli hozzá a felhasználó által hozzárendelt felügyelt identitáshoz. Ez a szerepkör lehetővé teszi az identitás számára az adatbázis adatainak és sémájának olvasását, írását és módosítását.


Fontos

Körültekintően rendeljen hozzá adatbázis-felhasználói szerepköröket vállalati éles környezetekben. Ezekben az esetekben az alkalmazás nem végezhet el minden műveletet egyetlen emelt szintű identitás használatával. Próbálja meg implementálni a minimális jogosultság elvét úgy, hogy több identitást konfigurál meghatározott engedélyekkel adott feladatokhoz.

Az adatbázis-szerepkörök és a biztonság konfigurálásáról az alábbi forrásokban olvashat bővebben:

Alkalmazásbeállítás létrehozása a felügyelt identitás ügyfélazonosítója számára

A felhasználó által hozzárendelt felügyelt identitás használatához hozzon létre egy környezeti változót AZURE_CLIENT_ID , és állítsa be a felügyelt identitás ügyfélazonosítójával egyenlőre. Ezt a változót az alkalmazás Konfiguráció szakaszában állíthatja be az Azure Portalon. Az ügyfél-azonosítót a felügyelt identitás erőforrásának Áttekintés szakaszában találja az Azure Portalon.

Mentse a módosításokat, és indítsa újra az alkalmazást, ha nem teszi meg automatikusan.

Ha rendszer által hozzárendelt felügyelt identitást kell használnia, hagyja ki a tulajdonságotoptions.clientId. Továbbra is át kell adnia a tulajdonságot authentication.type .

const config = {
  server,
  port,
  database,
  authentication: {
    type: 'azure-active-directory-default'
  },
  options: {
    encrypt: true
  }
};

Az alkalmazás tesztelése

Tesztelje az alkalmazást, és győződjön meg arról, hogy minden működik. Eltarthat néhány percig, amíg az összes módosítás propagálása az Azure-környezetben történik.

További lépések

Ebben az oktatóanyagban megtanulta, hogyan migrálhat egy alkalmazást jelszó nélküli kapcsolatokba.

A cikkben tárgyalt fogalmak részletesebb megismeréséhez olvassa el az alábbi forrásokat: