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


Titkos kódok elérése az online üzembe helyezésből titkos kódinjektálással (előzetes verzió)

ÉRVÉNYES:Azure CLI ml-bővítmény v2 (aktuális)Python SDK azure-ai-ml v2 (aktuális)

Ebben a cikkben megtanulhatja, hogyan használhat titkos kódinjektálást egy online végponttal és üzembe helyezéssel a titkos kulcsok titkos kulcsainak eléréséhez egy titkos tárból.

A következőket fogja elsajátítani:

  • A felhasználói identitás és engedélyeinek beállítása
  • Munkaterület-kapcsolatok és/vagy kulcstartók létrehozása titkos tárolóként való használatra
  • A végpont és az üzembe helyezés létrehozása a titkos kódinjektálási funkcióval

Fontos

Ez a funkció jelenleg nyilvános előzetes verzióban érhető el. Ez az előzetes verzió szolgáltatásszintű szerződés nélkül érhető el, és éles számítási feladatokhoz nem javasoljuk. Előfordulhat, hogy néhány funkció nem támogatott, vagy korlátozott képességekkel rendelkezik.

További információ: Kiegészítő használati feltételek a Microsoft Azure előzetes verziójú termékeihez.

Előfeltételek

  • Az Azure Machine Learning használatához Azure-előfizetéssel kell rendelkeznie. Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot. Próbálja ki ma az Azure Machine Learning ingyenes vagy fizetős verzióját.

  • Telepítse és konfigurálja az Azure Machine Learning CLI (v2) bővítményt vagy az Azure Machine Learning Python SDK-t (v2).

  • Egy Azure-erőforráscsoport, amelyben Önnek (vagy a használt szolgáltatásnévnek) rendelkeznie User Access Administrator kell és Contributor hozzá kell férnie. Ilyen erőforráscsoportot akkor használhat, ha az Azure Machine Learning-bővítményt a korábban leírtak szerint konfigurálta.

  • Egy Azure Machine Learning-munkaterület. Akkor lesz munkaterülete, ha az Azure Machine Learning-bővítményt a korábban leírtak szerint konfigurálta.

  • Minden betanított gépi tanulási modell, amely készen áll a pontozásra és üzembe helyezésre.

Titkos tár kiválasztása

A titkos kulcsok (például API-kulcsok) tárolását az alábbi lehetőségek közül választhatja:

  • Munkaterület-kapcsolatok a munkaterület alatt: Ha ilyen típusú titkos tárat használ, később engedélyt adhat a végponti identitásnak (a végpont létrehozásakor) a munkaterület-kapcsolatok titkos kulcsainak automatikus olvasásához, feltéve, hogy bizonyos feltételek teljesülnek. További információ: a rendszer által hozzárendelt identitás lap a Végpont létrehozása szakaszból.
  • Nem feltétlenül a munkaterület alá tartozó kulcstartók : Ha ilyen típusú titkos tárat használ, a végponti identitás nem kap engedélyt a titkos kulcsok automatikus beolvasására a kulcstartókból. Ezért ha egy felügyelt kulcstartó szolgáltatást, például a Microsoft Azure Key Vaultot szeretne titkos tárként használni, később hozzá kell rendelnie egy megfelelő szerepkört.

Munkaterület-kapcsolat használata titkos tárként

Létrehozhat munkaterület-kapcsolatokat az üzembe helyezéshez. Létrehozhat például egy kapcsolatot a Microsoft Azure OpenAI Szolgáltatással a Workspace Connections – Create REST API használatával.

Másik lehetőségként létrehozhat egyéni kapcsolatot az Azure Machine Learning Studióval (lásd : Egyéni kapcsolat létrehozása a parancssori folyamathoz) vagy az Azure AI Studióval (lásd : Egyéni kapcsolat létrehozása az AI Studióban).

  1. Azure OpenAI-kapcsolat létrehozása:

    PUT https://management.azure.com/subscriptions/{{subscriptionId}}/resourceGroups/{{resourceGroupName}}/providers/Microsoft.MachineLearningServices/workspaces/{{workspaceName}}/connections/{{connectionName}}?api-version=2023-08-01-preview
    Authorization: Bearer {{token}}
    Content-Type: application/json
    
    {
        "properties": {
            "authType": "ApiKey",
            "category": "AzureOpenAI",
            "credentials": {
                "key": "<key>",
                "endpoint": "https://<name>.openai.azure.com/",
            },
            "expiryTime": null,
            "target": "https://<name>.openai.azure.com/",
            "isSharedToAll": false,
            "sharedUserList": [],
            "metadata": {
                "ApiType": "Azure"
            }
        }
    }
    
  2. Másik lehetőségként létrehozhat egy egyéni kapcsolatot:

    PUT https://management.azure.com/subscriptions/{{subscriptionId}}/resourceGroups/{{resourceGroupName}}/providers/Microsoft.MachineLearningServices/workspaces/{{workspaceName}}/connections/{{connectionName}}?api-version=2023-08-01-preview
    Authorization: Bearer {{token}}
    Content-Type: application/json
    
    {
        "properties": {
            "authType": "CustomKeys",
            "category": "CustomKeys",
            "credentials": {
                "keys": {
                    "OPENAI_API_KEY": "<key>",
                    "SPEECH_API_KEY": "<key>"
                }
            },
            "expiryTime": null,
            "target": "_",
            "isSharedToAll": false,
            "sharedUserList": [],
            "metadata": {
                "OPENAI_API_BASE": "<oai endpoint>",
                "OPENAI_API_VERSION": "<oai version>",
                "OPENAI_API_TYPE": "azure",
                "SPEECH_REGION": "eastus",
            }
        }
    }
    
  3. Ellenőrizze, hogy a felhasználói identitás képes-e beolvasni a titkos kulcsokat a munkaterület-kapcsolatból a Munkaterület-kapcsolatok – Titkos kulcsok listázása REST API (előzetes verzió) használatával.

    POST https://management.azure.com/subscriptions/{{subscriptionId}}/resourceGroups/{{resourceGroupName}}/providers/Microsoft.MachineLearningServices/workspaces/{{workspaceName}}/connections/{{connectionName}}/listsecrets?api-version=2023-08-01-preview
    Authorization: Bearer {{token}}
    

Feljegyzés

Az előző kódrészletek rest API-hívások indításakor tokent használnak a Authorization fejlécben. A jogkivonatot a futtatással az account get-access-tokenszerezheti be. A jogkivonat lekéréséről további információt a Hozzáférési jogkivonat beszerzése című témakörben talál.

(Nem kötelező) Az Azure Key Vault használata titkos tárként

Hozza létre a kulcstartót, és állítson be egy titkos kulcsot az üzembe helyezéshez. A kulcstartó létrehozásával kapcsolatos további információkért lásd : Titkos kulcs beállítása és lekérése az Azure Key Vaultból az Azure CLI használatával. Továbbá,

  1. Azure Key Vault létrehozása:

    az keyvault create --name mykeyvault --resource-group myrg --location eastus
    
  2. Titkos kód létrehozása:

    az keyvault secret set --vault-name mykeyvault --name secret1 --value <value>
    

    Ez a parancs a létrehozott titkos verziót adja vissza. A titkos verzió lekéréséhez ellenőrizze a id válasz tulajdonságát. A visszaadott válasz a következőképpen https://mykeyvault.vault.azure.net/secrets/<secret_name>/<secret_version>néz ki: .

  3. Ellenőrizze, hogy a felhasználói identitás képes-e beolvasni a titkos kulcsot a kulcstartóból:

    az keyvault secret show --vault-name mykeyvault --name secret1 --version <secret_version>
    

Fontos

Ha titkos kulcstárolóként használja a kulcstartót a titkos kulcsok injektálásához, a kulcstartó engedélymodelljét azure-beli szerepköralapú hozzáférés-vezérlésként (RBAC) kell konfigurálnia. További információkért tekintse meg az Azure RBAC és a Key Vault hozzáférési szabályzatát.

Felhasználói identitás kiválasztása

Válassza ki az online végpont és az online üzembe helyezés létrehozásához használni kívánt felhasználói identitást. Ez a felhasználói identitás lehet felhasználói fiók, szolgáltatásnév-fiók vagy felügyelt identitás a Microsoft Entra-azonosítóban. A felhasználói identitás beállításához kövesse az Azure Machine Learning-erőforrások és -munkafolyamatok hitelesítésének beállításával kapcsolatos lépéseket.

(Nem kötelező) Szerepkör hozzárendelése a felhasználói identitáshoz

  • Ha a felhasználói identitás azt szeretné, hogy a végpont rendszer által hozzárendelt identitása (SAI) automatikusan engedélyt kapjon a munkaterület-kapcsolatok titkos kulcsainak olvasására, a felhasználói identitásnak rendelkeznie kell a Azure Machine Learning Workspace Connection Secrets Reader szerepkörrel (vagy magasabb szintű) a munkaterület hatókörében.

    • Az engedéllyel rendelkező Microsoft.Authorization/roleAssignments/write rendszergazdák parancssori felületi parancsot futtatva hozzárendelhetik a szerepkört a felhasználói identitáshoz:

      az role assignment create --assignee <UserIdentityID> --role "Azure Machine Learning Workspace Connection Secrets Reader" --scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>
      

    Feljegyzés

    A végpont rendszer által hozzárendelt identitása (SAI) nem kap automatikusan engedélyt a kulcstartók titkos kulcsainak olvasására. Ezért a felhasználói identitásnak nem kell szerepkört hozzárendelnie a Key Vaulthoz.

  • Ha felhasználó által hozzárendelt identitást (UAI) szeretne használni a végponthoz, nem kell hozzárendelnie a szerepkört a felhasználói identitáshoz. Ehelyett, ha a titkos injektálási funkciót szeretné használni, manuálisan kell hozzárendelnie a szerepkört a végpont UAI-jának.

    • Az engedéllyel rendelkező Microsoft.Authorization/roleAssignments/write rendszergazdák a következő parancsokat futtatva rendelhetik hozzá a szerepkört a végponti identitáshoz:

      Munkaterület-kapcsolatok esetén:

      az role assignment create --assignee <EndpointIdentityID> --role "Azure Machine Learning Workspace Connection Secrets Reader" --scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>
      

      Kulcstartók esetén:

      az role assignment create --assignee <EndpointIdentityID> --role "Key Vault Secrets User" --scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.KeyVault/vaults/<vaultName>
      
  • Ellenőrizze, hogy egy identitás (felhasználói identitás vagy végponti identitás) rendelkezik-e a szerepkörrel az Azure Portalon található erőforrásra való ugrással. Például az Azure Machine Learning-munkaterületen vagy a Key Vaultban:

    1. Válassza a Hozzáférés-vezérlés (IAM) lapot.
    2. Válassza a Hozzáférés ellenőrzése gombot, és keresse meg az identitást.
    3. Ellenőrizze, hogy a megfelelő szerepkör megjelenik-e az Aktuális szerepkör-hozzárendelések lapon.

Végpont létrehozása

Ha rendszer által hozzárendelt identitást (SAI) használ végponti identitásként, adja meg, hogy szeretné-e kikényszeríteni az alapértelmezett titkos tárakhoz (azaz a munkaterület alatti munkaterület-kapcsolatokhoz) való hozzáférést a végponti identitáshoz.

  1. Hozzon létre egy endpoint.yaml fájlt:

    $schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json
    name: my-endpoint
    auth_mode: key
    properties:
        enforce_access_to_default_secret_stores: enabled  # default: disabled
    
  2. Hozza létre a végpontot a endpoint.yaml fájl használatával:

    az ml online-endpoint create -f endpoint.yaml
    

Ha nem adja meg a tulajdonságot a identity végpontdefinícióban, a végpont alapértelmezés szerint SAI-t használ.

Ha a következő feltételek teljesülnek, a végponti identitás automatikusan megkapja a Azure Machine Learning Workspace Connection Secrets Reader szerepkört (vagy magasabbat) a munkaterület hatókörében:

  • A végpontot létrehozó felhasználói identitás jogosult titkos kulcsok beolvasására a munkaterület-kapcsolatokból (Microsoft.MachineLearningServices/workspaces/connections/listsecrets/action).
  • A végpont SAI-t használ.
  • A végpont egy jelölővel van definiálva, amely a végpont létrehozásakor kényszeríti ki az alapértelmezett titkos kulcstárolókhoz (az aktuális munkaterületen lévő munkaterület-kapcsolatokhoz) való hozzáférést.

A végponti identitás nem kap automatikusan szerepkört a kulcstartó titkos kulcsainak olvasásához. Ha titkos tárolóként szeretné használni a Key Vaultot, manuálisan kell hozzárendelnie egy megfelelő szerepkört, például Key Vault Secrets User a key vault hatókörében lévő végponti identitáshoz . A szerepkörökről további információt a Key Vault adatsík-műveleteihez használt azure-beli beépített szerepkörökben talál.

Üzembe helyezés létrehozása

  1. Hozzon létre egy pontozószkriptet vagy Dockerfile-t és a kapcsolódó szkripteket, hogy az üzembe helyezés környezeti változókon keresztül használhassa fel a titkos kulcsokat.

    • Nincs szükség arra, hogy meghívja a munkaterület-kapcsolatokhoz vagy kulcstartókhoz tartozó titkos lekérési API-kat. A környezeti változók titkos kódokkal vannak feltöltve, amikor az üzembe helyezés felhasználói tárolója elindul.

    • A környezeti változóba injektált érték a következő három típus egyike lehet:

      • A Titkos kódok teljes API-ja (előzetes verzió) válasza. Meg kell ismernie az API válaszstruktúráját, elemeznie és használnia kell azt a felhasználói tárolóban.
      • A munkaterület-kapcsolat egyedi titkos kódja vagy metaadatai. A munkaterület kapcsolati API válaszstruktúrájának megértése nélkül is használhatja.
      • A Key Vault egyedi titkos verziója. A Key Vault API válaszstruktúrájának megértése nélkül is használhatja.
  2. Kezdeményezheti az üzembe helyezés létrehozását a pontozószkripttel (ha egyéni modellt használ) vagy egy Dockerfile használatával (ha a BYOC megközelítést alkalmazza az üzembe helyezéshez). Adja meg a felhasználó által a felhasználói tárolóban elvárt környezeti változókat.

    Ha a környezeti változókra leképezett értékek bizonyos mintákat követnek, a végpontidentitás titkos lekérés és injektálás végrehajtására lesz használva.

    Minta Működés
    ${{azureml://connections/<connection_name>}} A rendszer a teljes List Secrets API -t (előzetes verzió) beszúrja a környezeti változóba.
    ${{azureml://connections/<connection_name>/credentials/<credential_name>}} A hitelesítő adatok értékét a környezeti változóba injektáljuk.
    ${{azureml://connections/<connection_name>/metadata/<metadata_name>}} A metaadatok értéke a környezeti változóba lesz injektálva.
    ${{azureml://connections/<connection_name>/target}} A célérték (ahol alkalmazható) a környezeti változóba kerül.
    ${{keyvault:https://<keyvault_name>.vault.azure.net/secrets/<secret_name>/<secret_version>}} A titkos verzió értékét a rendszer a környezeti változóba injektálja.

    Példa:

    1. Létrehozás deployment.yaml:

      $schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
      name: blue
      endpoint_name: my-endpoint
      #…
      environment_variables:
          AOAI_CONNECTION: ${{azureml://connections/aoai_connection}}
          LANGCHAIN_CONNECTION: ${{azureml://connections/multi_connection_langchain}}
      
          OPENAI_KEY: ${{azureml://connections/multi_connection_langchain/credentials/OPENAI_API_KEY}}
          OPENAI_VERSION: ${{azureml://connections/multi_connection_langchain/metadata/OPENAI_API_VERSION}}
      
          USER_SECRET_KV1_KEY: ${{keyvault:https://mykeyvault.vault.azure.net/secrets/secret1/secretversion1}}
      
    2. Hozza létre az üzembe helyezést:

      az ml online-deployment create -f deployment.yaml
      

Ha a enforce_access_to_default_secret_stores végpont jelzője be van állítva, a rendszer ellenőrzi a felhasználói identitásnak a munkaterület-kapcsolatok titkos kulcsainak olvasására vonatkozó engedélyét a végpont létrehozásakor és az üzembe helyezés létrehozási ideje alatt is. Ha a felhasználói identitás nem rendelkezik engedéllyel, a létrehozás sikertelen lesz.

Az üzembe helyezés létrehozásakor, ha egy környezeti változó az előző táblázatban szereplő mintákat követő értékre van leképezve, a titkos kulcsok lekérése és injektálása a végponti identitással (SAI vagy UAI) történik. Ha a végponti identitás nem rendelkezik engedéllyel arra, hogy titkos kulcsokat olvasson be a kijelölt titkos tárolókból (munkaterület-kapcsolatokból vagy kulcstartókból), az üzembe helyezés létrehozása sikertelen lesz. Ha a megadott titkos referenciák nem léteznek a titkos tárolókban, az üzembe helyezés létrehozása sikertelen lesz.

Az Azure Machine Learning online végpontjainak üzembe helyezése során előforduló hibákról további információt a Titkos kódinjektálási hibák című témakörben talál.

A titkos kódok felhasználása

A titkos kulcsokat úgy használhatja fel, hogy lekérte őket a környezet változóiból az üzemelő példányokban futó felhasználói tárolóban.