Dela via


Auktorisera obevakad åtkomst till Azure Databricks-resurser med tjänstens huvudnamn med OAuth

Det här avsnittet innehåller steg och information om hur du auktoriserar åtkomst till Azure Databricks-resurser när du automatiserar Azure Databricks CLI-kommandon eller anropar REST-API:er för Azure Databricks från kod som körs från en obevakad process.

Azure Databricks använder OAuth som det föredragna protokollet för användarauktorisering och autentisering när du interagerar med Azure Databricks-resurser utanför användargränssnittet. Azure Databricks tillhandahåller också verktyget för enhetlig klientautentisering för att automatisera uppdateringen av åtkomsttoken som genereras som en del av OAuths autentiseringsmetod. Detta gäller både för tjänstens huvudnamn och användarkonton, men du måste konfigurera ett huvudnamn för tjänsten med rätt behörigheter och behörigheter för de Azure Databricks-resurser som den måste komma åt som en del av sin verksamhet.

För mer övergripande information, se Auktorisering av åtkomst till Azure Databricks resurser.

Vilka alternativ har jag för auktorisering och autentisering när jag använder en tjänstprincip för Azure Databricks?

I det här avsnittet refererar auktorisering till protokollet (OAuth) som används för att förhandla om åtkomst till specifika Azure Databricks-resurser via delegering. Authentication refererar till den mekanism med vilken autentiseringsuppgifter representeras, överförs och verifieras– vilket i det här fallet är åtkomsttoken.

Azure Databricks använder OAuth 2.0-baserad auktorisering för att möjliggöra åtkomst till Azure Databricks-kontoresurser och arbetsyterresurser från kommandoraden eller koden för ett tjänsthuvudkonto med behörighet att komma åt dessa resurser. När en principanvändare för Azure Databricks-tjänsten har konfigurerats och dess autentiseringsuppgifter verifieras när den kör ett CLI-kommando eller anropar ett REST-API, ges en OAuth-token till det deltagande verktyget eller SDK:n för att utföra tokenbaserad autentisering för tjänstens principanvändares räkning från och med den tiden. OAuth-åtkomsttoken har en livslängd på en timme, varefter det aktuella verktyget eller SDK:n gör ett automatiskt bakgrundsförsök för att hämta en ny token som också är giltig i en timme.

Azure Databricks stöder två sätt att auktorisera åtkomst för ett tjänsthuvudnamn med OAuth:

  • Mestadels automatiskt, med hjälp av stöd för enhetlig klientautentisering i Databricks. Använd den här förenklade metoden om du använder specifika Azure Databricks SDK:er (till exempel Databricks Terraform SDK) och verktyg. Verktyg och SDK:er som stöds visas i Databricks enhetlig klientautentisering. Den här metoden passar bra för automatisering eller andra obevakade processscenarier.
  • Manuellt genom att direkt generera ett OAuth-kodverifierare/utmaningspar och en auktoriseringskod, och använda dem för att skapa den första OAuth-token som du anger i konfigurationen. Använd den här metoden när du inte använder ett API som stöds av databricks enhetlig klientautentisering. I det här fallet kan du behöva utveckla en egen mekanism för att hantera uppdatering av åtkomsttoken som är specifika för verktyget eller API:et från tredje part som du använder. Mer information finns i: generera och använda åtkomsttoken manuellt för OAuth-tjänstens huvudnamnsautentisering.

Innan du börjar måste du konfigurera ett huvudnamn för Azure Databricks-tjänsten och tilldela den lämpliga behörigheter för att få åtkomst till de resurser som den måste använda när din automatiseringskod eller dina kommandon begär dem.

Krav: Skapa ett huvudnamn för tjänsten

Kontoadministratörer och arbetsyteadministratörer kan skapa tjänstens huvudnamn. I det här steget beskrivs hur du skapar ett huvudnamn för tjänsten på en Azure Databricks-arbetsyta. Mer information om Azure Databricks-kontokonsolen finns i Hantera tjänstehuvudmän i ditt konto.

Du kan också skapa ett Microsoft Entra ID-hanterat tjänsthuvudnamn och lägga till det i Azure Databricks. Mer information finns i Databricks och Microsoft Entra ID-tjänstens huvudnamn.

  1. Som arbetsyteadministratör loggar du in på Azure Databricks-arbetsytan.
  2. Klicka på ditt användarnamn i det övre fältet på Azure Databricks-arbetsytan och välj Inställningar.
  3. Klicka på fliken Identitet och åtkomst .
  4. Bredvid Tjänstens huvudnamn klickar du på Hantera.
  5. Klicka på Lägg till tjänstens huvudnamn.
  6. Klicka på listrutepilen i sökrutan och klicka sedan på Lägg till ny.
  7. Under Hantering väljer du Hanterad Databricks.
  8. Ange ett namn för tjänstens huvudnamn.
  9. Klicka på Lägg till.

Tjänstens huvudnamn läggs till i både din arbetsyta och Azure Databricks-kontot.

Steg 1: Tilldela behörigheter till tjänstens huvudnamn

  1. Klicka på namnet på tjänstens huvudnamn för att öppna informationssidan.
  2. På fliken Konfigurationer markerar du kryssrutan bredvid varje berättigande som du vill att tjänstens huvudnamn ska ha för den här arbetsytan och klickar sedan på Uppdatera.
  3. På fliken Behörigheter beviljar du åtkomst till alla Azure Databricks-användare, tjänsthuvudnamn och grupper som du vill hantera och använda tjänstens huvudnamn. Se Hantera roller på ett huvudnamn för tjänsten.

Steg 2: Skapa en OAuth-hemlighet för tjänstens huvudnamn

Innan du kan använda OAuth för att auktorisera åtkomst till dina Azure Databricks-resurser måste du först skapa en OAuth-hemlighet som kan användas för att generera OAuth-åtkomsttoken för autentisering. Ett huvudnamn för tjänsten kan ha upp till fem OAuth-hemligheter. Kontoadministratörer och arbetsyteadministratörer kan skapa en OAuth-hemlighet för tjänstens huvudnamn.

  1. På informationssidan för tjänstens huvudnamn klickar du på fliken Hemligheter .

  2. Under OAuth-hemligheter klickar du på Generera hemlighet.

    Generera OAuth-hemlighet från arbetsytan

  3. Kopiera det visade hemlighets - och klient-ID:t och klicka sedan på Klar.

Hemligheten avslöjas bara en gång under skapandet. Klient-ID:t är samma som tjänstens huvudnamns program-ID.

Kontoadministratörer kan också generera en OAuth-hemlighet från informationssidan för tjänstens huvudnamn i kontokonsolen.

  1. Logga in på kontokonsolen som kontoadministratör.

  2. Klicka på Användarhanteringsikon för kontokonsolAnvändarhantering.

  3. På fliken Tjänstens huvudnamn väljer du tjänstens huvudnamn.

  4. Under OAuth-hemligheter klickar du på Generera hemlighet.

    Generera OAuth-hemlighet från arbetsytan

  5. Kopiera det visade hemlighets - och klient-ID:t och klicka sedan på Klar.

Kommentar

För att tjänstens huvudnamn ska kunna använda kluster eller SQL-lager måste du ge tjänstens huvudnamn åtkomst till dem. Se Beräkningsbehörigheter eller Hantera ett SQL-lager.

Steg 3: Använda OAuth-auktorisering

Om du vill använda OAuth-auktorisering med verktyget för enhetlig klientautentisering måste du ange följande associerade miljövariabler, .databrickscfg fält, Terraform-fält eller Config fält:

  • Azure Databricks-värden, som anges som https://accounts.azuredatabricks.net för kontoåtgärder eller mål-URL per arbetsyta, till exempel https://adb-1234567890123456.7.azuredatabricks.net för arbetsyteåtgärder.
  • Azure Databricks-konto-ID för Azure Databricks-kontoåtgärder.
  • Klient-ID för tjänstens huvudnamn.
  • Tjänstens huvudhemlighet.

Om du vill utföra autentisering med OAuth-tjänstens huvudnamn integrerar du följande i koden baserat på det deltagande verktyget eller SDK:n:

Environment

Om du vill använda miljövariabler för en specifik Azure Databricks-autentiseringstyp med ett verktyg eller SDK kan du läsa auktorisera åtkomst till Azure Databricks-resurser eller verktygets eller SDK:ns dokumentation. Se även Miljövariabler och fält för klient enhetlig autentisering och Standardmetoder för klient enhetlig autentisering.

För åtgärder på kontonivå anger du följande miljövariabler:

  • DATABRICKS_HOST, ange till Azure Databricks-kontokonsolens URL, https://accounts.azuredatabricks.net.
  • DATABRICKS_ACCOUNT_ID
  • DATABRICKS_CLIENT_ID
  • DATABRICKS_CLIENT_SECRET

För åtgärder på arbetsytans nivå anger du följande miljövariabler:

  • DATABRICKS_HOSTanger du till URL:en för Azure Databricks per arbetsyta, till exempel https://adb-1234567890123456.7.azuredatabricks.net.
  • DATABRICKS_CLIENT_ID
  • DATABRICKS_CLIENT_SECRET

Profil

Skapa eller identifiera en Azure Databricks-konfigurationsprofil med följande fält i .databrickscfg filen. Om du skapar profilen ersätter du platshållarna med lämpliga värden. För att använda profilen med ett verktyg eller SDK, se Authorizing access to Azure Databricks resources eller verktygets eller SDK:ns dokumentation. Se även Miljövariabler och fält för klient enhetlig autentisering och Standardmetoder för klient enhetlig autentisering.

För åtgärder på kontonivå anger du följande värden i .databrickscfg filen. I det här fallet är https://accounts.azuredatabricks.netAzure Databricks-kontokonsolens URL:

[<some-unique-configuration-profile-name>]
host          = <account-console-url>
account_id    = <account-id>
client_id     = <service-principal-client-id>
client_secret = <service-principal-secret>

För åtgärder på arbetsytenivå anger du följande värden i .databrickscfg filen. I det här fallet är värden URL:en för Azure Databricks per arbetsyta, till exempel https://adb-1234567890123456.7.azuredatabricks.net:

[<some-unique-configuration-profile-name>]
host          = <workspace-url>
client_id     = <service-principal-client-id>
client_secret = <service-principal-secret>

CLI

Gör något av följande för Databricks CLI:

  • Ange miljövariablerna enligt beskrivningen i avsnittet "Miljö".
  • Ange värdena i .databrickscfg filen enligt beskrivningen i avsnittet Profil i den här artikeln.

Miljövariabler har alltid företräde framför värden i filen .databrickscfg .

Se även OAuth-autentisering från dator till dator (M2M).

Anslut

Kommentar

OAuth-tjänstens huvudnamnsautentisering stöds i följande Databricks Connect-versioner:

  • För Python, Databricks Connect för Databricks Runtime 14.0 och senare.
  • För Scala, Databricks Connect för Databricks Runtime 13.3 LTS och senare. Databricks SDK för Java som ingår i Databricks Connect för Databricks Runtime 13.3 LTS och senare måste uppgraderas till Databricks SDK för Java 0.17.0 eller senare.

För Databricks Connect kan du göra något av följande:

  • Ange värdena i .databrickscfg filen för åtgärder på Azure Databricks-arbetsytenivå enligt beskrivningen i den här artikelns avsnitt "Profil". Ange cluster_id även miljövariabeln i din profil till url:en per arbetsyta, till exempel https://adb-1234567890123456.7.azuredatabricks.net.
  • Ange miljövariablerna för åtgärder på Azure Databricks-arbetsytenivå enligt beskrivningen i den här artikelns "Miljö"-avsnitt. Ange DATABRICKS_CLUSTER_ID även miljövariabeln till url:en per arbetsyta, till exempel https://adb-1234567890123456.7.azuredatabricks.net.

Värden i .databrickscfg filen har alltid företräde framför miljövariabler.

Information om hur du initierar Databricks Connect-klienten med dessa miljövariabler eller värden i filen finns i .databrickscfg Beräkningskonfiguration för Databricks Connect.

VS Code

Gör följande för Databricks-tillägget för Visual Studio Code:

  1. Ange värdena i .databrickscfg filen för åtgärder på Azure Databricks-arbetsytenivå enligt beskrivningen i den här artikelns avsnitt "Profil".
  2. I fönstret Konfiguration i Databricks-tillägget för Visual Studio Code klickar du på Konfigurera Databricks.
  3. I kommandopaletten för Databricks Host anger du url:en per arbetsyta, till exempel https://adb-1234567890123456.7.azuredatabricks.netoch trycker sedan på Enter.
  4. I kommandopaletten väljer du målprofilens namn i listan för din URL.

Mer information finns i Konfigurera auktorisering för Databricks-tillägget för Visual Studio Code.

Terraform

För åtgärder på kontonivå för standardautentisering:

provider "databricks" {
  alias = "accounts"
}

För direkt konfiguration (ersätt retrieve platshållarna med din egen implementering för att hämta värdena från konsolen eller något annat konfigurationsarkiv, till exempel HashiCorp Vault. Se även Valvprovider). I det här fallet är https://accounts.azuredatabricks.netAzure Databricks-kontokonsolens URL:

provider "databricks" {
  alias         = "accounts"
  host          = <retrieve-account-console-url>
  account_id    = <retrieve-account-id>
  client_id     = <retrieve-client-id>
  client_secret = <retrieve-client-secret>
}

För åtgärder på arbetsytenivå för standardautentisering:

provider "databricks" {
  alias = "workspace"
}

För direkt konfiguration (ersätt retrieve platshållarna med din egen implementering för att hämta värdena från konsolen eller något annat konfigurationsarkiv, till exempel HashiCorp Vault. Se även Valvprovider). I det här fallet är värden URL:en för Azure Databricks per arbetsyta, till exempel https://adb-1234567890123456.7.azuredatabricks.net:

provider "databricks" {
  alias         = "workspace"
  host          = <retrieve-workspace-url>
  client_id     = <retrieve-client-id>
  client_secret = <retrieve-client-secret>
}

Mer information om autentisering med Databricks Terraform-providern finns i Autentisering.

Python

För åtgärder på kontonivå använder du följande för standardautentisering:

from databricks.sdk import AccountClient

a = AccountClient()
# ...

För direkt konfiguration använder du följande och ersätter retrieve platshållarna med din egen implementering för att hämta värdena från konsolen eller något annat konfigurationsarkiv, till exempel Azure KeyVault. I det här fallet är https://accounts.azuredatabricks.netAzure Databricks-kontokonsolens URL:

from databricks.sdk import AccountClient

a = AccountClient(
  host          = retrieve_account_console_url(),
  account_id    = retrieve_account_id(),
  client_id     = retrieve_client_id(),
  client_secret = retrieve_client_secret()
)
# ...

För åtgärder på arbetsytenivå, särskilt standardautentisering:

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()
# ...

För direkt konfiguration ersätter du retrieve platshållarna med din egen implementering för att hämta värdena från konsolen eller något annat konfigurationsarkiv, till exempel Azure KeyVault. I det här fallet är värden URL:en för Azure Databricks per arbetsyta, till exempel https://adb-1234567890123456.7.azuredatabricks.net:

from databricks.sdk import WorkspaceClient

w = WorkspaceClient(
  host          = retrieve_workspace_url(),
  client_id     = retrieve_client_id(),
  client_secret = retrieve_client_secret()
)
# ...

Mer information om autentisering med Databricks-verktyg och SDK:er som använder Python och implementerar enhetlig autentisering med Databricks-klienten finns i:

Kommentar

Databricks-tillägget för Visual Studio Code använder Python men har ännu inte implementerat OAuth-tjänstens huvudnamnsautentisering.

Java

För åtgärder på arbetsytenivå med standardautentisering:

import com.databricks.sdk.WorkspaceClient;
// ...
WorkspaceClient w = new WorkspaceClient();
// ...

För direkt konfiguration (ersätt retrieve platshållarna med din egen implementering för att hämta värdena från konsolen eller något annat konfigurationsarkiv, till exempel Azure KeyVault). I det här fallet är värden URL:en för Azure Databricks per arbetsyta, till exempel https://adb-1234567890123456.7.azuredatabricks.net:

import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.core.DatabricksConfig;
// ...
DatabricksConfig cfg = new DatabricksConfig()
  .setHost(retrieveWorkspaceUrl())
  .setClientId(retrieveClientId())
  .setClientSecret(retrieveClientSecret());
WorkspaceClient w = new WorkspaceClient(cfg);
// ...

Mer information om autentisering med Databricks-verktyg och SDK:er som använder Java och implementerar enhetlig autentisering för Databricks-klienten finns i:

Go

För åtgärder på kontonivå med standardautentisering:

import (
"github.com/databricks/databricks-sdk-go"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient())
// ...

För direkt konfiguration (ersätt retrieve platshållarna med din egen implementering för att hämta värdena från konsolen eller något annat konfigurationsarkiv, till exempel Azure KeyVault). I det här fallet är https://accounts.azuredatabricks.netAzure Databricks-kontokonsolens URL:

import (
  "github.com/databricks/databricks-sdk-go"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient(&databricks.Config{
    Host:         retrieveAccountConsoleUrl(),
    AccountId:    retrieveAccountId(),
    ClientId:     retrieveClientId(),
    ClientSecret: retrieveClientSecret(),
}))
// ...

För operationer på arbetsytanivå med standardautentisering:

import (
  "github.com/databricks/databricks-sdk-go"
)
// ...
a := databricks.Must(databricks.NewAccountClient())
// ...

För direkt konfiguration (ersätt retrieve platshållarna med din egen implementering för att hämta värdena från konsolen eller något annat konfigurationsarkiv, till exempel Azure KeyVault). I det här fallet är värden URL:en för Azure Databricks per arbetsyta, till exempel https://adb-1234567890123456.7.azuredatabricks.net:

import (
  "github.com/databricks/databricks-sdk-go"
)
// ...
a := databricks.Must(databricks.NewAccountClient(&databricks.Config{
  Host:         retrieveWorkspaceUrl(),
  ClientId:     retrieveClientId(),
  ClientSecret: retrieveClientSecret(),
}))
// ...

Mer information om autentisering med Databricks-verktyg och SDK:er som använder Go och som implementerar enhetlig autentisering för Databricks-klienten finns i Autentisera Databricks SDK för Go med ditt Azure Databricks-konto eller din arbetsyta.

Generera och använda åtkomsttokens manuellt för OAuth-tjänsthuvudautentisering

Azure Databricks-verktyg och SDK:er som implementerar Databricks-klientens enhetliga autentiseringsstandard genererar, uppdaterar och använder Azure Databricks OAuth-åtkomsttokens åt dig efter behov för autentisering med OAuth-tjänsthuvudnamn.

Databricks rekommenderar att du använder klientad autentisering, men om du måste generera, uppdatera eller använda Azure Databricks OAuth-åtkomsttoken manuellt följer du anvisningarna i det här avsnittet.

Använd tjänstens huvudnamns klient-ID och OAuth-hemlighet för att begära en OAuth-åtkomsttoken för att autentisera till både REST-API:er på kontonivå och REST-API:er på arbetsytenivå. Åtkomsttoken upphör att gälla om en timme. Du måste begära en ny OAuth-åtkomsttoken efter förfallodatumet. Omfånget för OAuth-åtkomsttoken beror på vilken nivå du skapar token från. Du kan skapa en token på antingen kontonivå eller arbetsytenivå enligt följande:

Generera en åtkomsttoken på kontonivå manuellt

En OAuth-åtkomsttoken som skapats från kontonivån kan användas mot Databricks REST-API:er i kontot och på alla arbetsytor som tjänstens huvudnamn har åtkomst till.

  1. Logga in på kontokonsolen som kontoadministratör.

  2. Klicka på nedåtpilen bredvid ditt användarnamn i det övre högra hörnet.

  3. Kopiera ditt konto-ID.

  4. Konstruera tokenslutpunkts-URL:en genom att <my-account-id> ersätta i följande URL med det konto-ID som du kopierade.

    https://accounts.azuredatabricks.net/oidc/accounts/<my-account-id>/v1/token
    
  5. Använd en klient, till exempel curl för att begära en OAuth-åtkomsttoken med tokenslutpunktens URL, tjänstens huvudnamns klient-ID (även kallat program-ID) och tjänstens huvudnamns OAuth-hemlighet som du skapade. Omfånget all-apis begär en OAuth-åtkomsttoken som kan användas för att komma åt alla Databricks REST-API:er som tjänstens huvudnamn har beviljats åtkomst till.

    • Ersätt <token-endpoint-URL> med den föregående tokenslutpunkts-URL:en.
    • Ersätt <client-id> med tjänstens huvudnamns klient-ID, som även kallas program-ID.
    • Ersätt <client-secret> med tjänstens huvudnamns OAuth-hemlighet som du skapade.
    export CLIENT_ID=<client-id>
    export CLIENT_SECRET=<client-secret>
    
      curl --request POST \
      --url <token-endpoint-URL> \
      --user "$CLIENT_ID:$CLIENT_SECRET" \
      --data 'grant_type=client_credentials&scope=all-apis'
    

    Detta genererar ett svar som liknar:

      {
        "access_token": "eyJraWQiOiJkYTA4ZTVjZ…",
        "token_type": "Bearer",
        "expires_in": 3600
      }
    

    access_token Kopiera från svaret.

Generera en åtkomsttoken på arbetsytans nivå manuellt

En OAuth-åtkomsttoken som skapats från arbetsytenivån kan bara komma åt REST-API:er på den arbetsytan, även om tjänstens huvudnamn är kontoadministratör eller är medlem i andra arbetsytor.

  1. Skapa tokenslutpunkts-URL:en genom att https://<databricks-instance> ersätta med arbetsytans URL för din Azure Databricks-distribution:

    https://<databricks-instance>/oidc/v1/token
    
  2. Använd en klient, till exempel curl för att begära en OAuth-åtkomsttoken med tokenslutpunktens URL, tjänstens huvudnamns klient-ID (även kallat program-ID) och tjänstens huvudnamns OAuth-hemlighet som du skapade. Omfånget all-apis begär en OAuth-åtkomsttoken som kan användas för att komma åt alla Databricks REST-API:er som tjänstens huvudnamn har beviljats åtkomst till på arbetsytan som du begär token från.

    • Ersätt <token-endpoint-URL> med den föregående tokenslutpunkts-URL:en.
    • Ersätt <client-id> med tjänstens huvudnamns klient-ID, som även kallas program-ID.
    • Ersätt <client-secret> med tjänstens huvudnamns OAuth-hemlighet som du skapade.
    export CLIENT_ID=<client-id>
    export CLIENT_SECRET=<client-secret>
    
    curl --request POST \
    --url <token-endpoint-URL> \
    --user "$CLIENT_ID:$CLIENT_SECRET" \
    --data 'grant_type=client_credentials&scope=all-apis'
    

    Detta genererar ett svar som liknar:

    {
      "access_token": "eyJraWQiOiJkYTA4ZTVjZ…",
      "token_type": "Bearer",
      "expires_in": 3600
    }
    

    access_token Kopiera från svaret.

Anropa ett Databricks REST API

Du kan använda OAuth-åtkomsttoken för att autentisera till Azure Databricks kontonivå REST-API:er och REST-API:er på arbetsytenivå. Tjänstens huvudnamn måste ha kontoadministratörsbehörighet för att anropa REST-API:er på kontonivå.

Inkludera åtkomsttoken i auktoriseringshuvudet med Bearer-authentisering. Du kan använda den här metoden med curl eller någon klient som du skapar.

Exempel på REST API-begäran på kontonivå

I det här exemplet används Bearer autentisering för att hämta en lista över alla arbetsytor som är associerade med ett konto.

  • Ersätt <oauth-access-token> med tjänstens huvudnamns OAuth-åtkomsttoken som du kopierade i föregående steg.
  • Ersätt <account-id> med ditt konto-ID.
export OAUTH_TOKEN=<oauth-access-token>

curl --request GET --header "Authorization: Bearer $OAUTH_TOKEN" \
'https://accounts.azuredatabricks.net/api/2.0/accounts/<account-id>/workspaces'

Exempel på REST API-begäran på arbetsytenivå

I det här exemplet används Bearer autentisering för att lista alla tillgängliga kluster på den angivna arbetsytan.

  • Ersätt <oauth-access-token> med tjänstens huvudnamns OAuth-åtkomsttoken som du kopierade i föregående steg.
  • Ersätt <workspace-URL> med din grundläggande arbetsyte-URL, som har formuläret som liknar dbc-a1b2345c-d6e7.cloud.databricks.com.
export OAUTH_TOKEN=<oauth-access-token>

curl --request GET --header "Authorization: Bearer $OAUTH_TOKEN" \
'https://<workspace-URL>/api/2.0/clusters/list'

Ytterligare resurser