Sdílet prostřednictvím


Nasazení integrované služby SQL Managed Instance služby Active Directory s povolenou službou Azure Arc

V tomto článku se dozvíte, jak nasadit spravovanou instanci Azure SQL s podporou služby Azure Arc s ověřováním Active Directory.

Požadavky

Než začnete s nasazením služby SQL Managed Instance, ujistěte se, že máte tyto požadavky:

Požadavky konektoru

Konektor služby Active Directory spravovaný zákazníkem a konektor služby Active Directory spravované systémem jsou různé režimy nasazení, které mají různé požadavky a kroky. Každý režim má během nasazování specifické požadavky. Vyberte kartu pro konektor, který používáte.

Pro nasazení keytab spravovaného zákazníkem služby Active Directory musíte zadat:

  • Uživatelský účet služby Active Directory pro SQL
  • Hlavní názvy služeb (SPN) pod uživatelským účtem
  • Záznam DNS A (forward) pro primární koncový bod SQL (a volitelně sekundární koncový bod)

Příprava nasazení

V závislosti na vašem režimu nasazení proveďte následující kroky a připravte se na nasazení služby SQL Managed Instance.

Příprava na nasazení v režimu keytab spravovaného zákazníkem:

  1. Identifikace názvu DNS pro koncové body SQL: Zvolte jedinečné názvy DNS pro koncové body SQL, ke kterým se klienti budou připojovat mimo cluster Kubernetes.

    • Názvy DNS by měly být v doméně služby Active Directory nebo v jejích následnických doménách.
    • Příklady v tomto článku se používají sqlmi-primary.contoso.local pro primární název DNS a sqlmi-secondary.contoso.local pro sekundární název DNS.
  2. Identifikujte čísla portů pro koncové body SQL: Zadejte číslo portu pro každý koncový bod SQL.

    • Čísla portů musí být v přijatelném rozsahu čísel portů pro váš cluster Kubernetes.
    • Příklady v tomto článku se používají 31433 pro primární číslo portu a 31434 číslo sekundárního portu.
  3. Vytvořte účet služby Active Directory pro spravovanou instanci: Zvolte název účtu služby Active Directory, který bude představovat vaši spravovanou instanci.

    • Název musí být jedinečný v doméně služby Active Directory.
    • Příklady v tomto článku se používají sqlmi-account pro název účtu služby Active Directory.

    Vytvoření účtu:

    1. Na řadiči domény otevřete nástroj Uživatelé a počítače služby Active Directory. Vytvořte účet představující spravovanou instanci.
    2. Zadejte heslo účtu, které odpovídá zásadám hesel domény služby Active Directory. Toto heslo použijete v některých krocích v dalších částech.
    3. Ujistěte se, že je účet povolený. Účet nepotřebuje žádná zvláštní oprávnění.
  4. Vytvořte záznamy DNS pro koncové body SQL na serverech DNS služby Active Directory: V jednom ze serverů DNS služby Active Directory vytvořte záznamy A (záznamy dopředného vyhledávání) pro název DNS, který jste zvolili v kroku 1.

    • Záznamy DNS by měly odkazovat na IP adresu, na kterou koncový bod SQL naslouchá připojení mimo cluster Kubernetes.
    • Není nutné vytvářet záznamy ukazatele zpětného vyhledávání (PTR) ve spojení se záznamy A.
  5. Vytvoření hlavních názvů služeb ( SPN): Aby mohl SQL přijímat ověřování active directory vůči koncovým bodům SQL, musíte v účtu, který jste vytvořili v předchozím kroku, zaregistrovat dva hlavní názvy služby . Pro primární koncový bod musí být zaregistrované dva hlavní názvy služeb. Pokud chcete ověřování active Directory pro sekundární koncový bod, musí být hlavní názvy služby (SPN) také zaregistrované pro sekundární koncový bod.

    Vytvoření a registrace hlavních názvů služby (SPN):

    1. K vytvoření hlavních názvů služby (SPN) použijte následující formát:

      MSSQLSvc/<DNS name>
      MSSQLSvc/<DNS name>:<port>
      
    2. Na jednom z řadičů domény spusťte následující příkazy pro registraci hlavních názvů služeb:

      setspn -S MSSQLSvc/<DNS name> <account>
      setspn -S MSSQLSvc/<DNS name>:<port> <account>
      

      Příkazy můžou vypadat jako v následujícím příkladu:

      setspn -S MSSQLSvc/sqlmi-primary.contoso.local sqlmi-account
      setspn -S MSSQLSvc/sqlmi-primary.contoso.local:31433 sqlmi-account
      
    3. Pokud chcete ověřování active Directory na sekundárním koncovém bodu, spusťte stejné příkazy pro přidání hlavních názvů služby (SPN) pro sekundární koncový bod:

      setspn -S MSSQLSvc/<DNS name> <account>
      setspn -S MSSQLSvc/<DNS name>:<port> <account>
      

      Příkazy můžou vypadat jako v následujícím příkladu:

      setspn -S MSSQLSvc/sqlmi-secondary.contoso.local sqlmi-account
      setspn -S MSSQLSvc/sqlmi-secondary.contoso.local:31434 sqlmi-account
      
  6. Vygenerujte soubor s klíčovou tabulkou, který obsahuje položky pro účet a hlavní názvy služeb: Aby se SQL mohl ověřit ve službě Active Directory a přijímat ověřování od uživatelů služby Active Directory, zadejte soubor keytab pomocí tajného klíče Kubernetes.

    • Soubor keytab obsahuje šifrované položky pro účet služby Active Directory vygenerovaný pro spravovanou instanci a hlavní názvy služeb.

    • SQL Server používá tento soubor jako své přihlašovací údaje vůči službě Active Directory.

    • Můžete si vybrat z několika nástrojů pro vygenerování souboru keytab:

      • adutil: K dispozici pro Linux (viz úvod do nástroje adutil)
      • ktutil: K dispozici v Linuxu
      • ktpass: K dispozici ve Windows
      • Vlastní skripty

    Vygenerování souboru keytab speciálně pro spravovanou instanci:

    1. Použijte jeden z těchto vlastních skriptů:

      Skripty přijímají několik parametrů a generují soubor keytab a soubor specifikace YAML pro tajný klíč Kubernetes, který obsahuje klíčtab.

    2. Ve skriptu nahraďte hodnoty parametrů hodnotami pro nasazení spravované instance.

      Pro vstupní parametry použijte následující hodnoty:

      • --realm: Doména služby Active Directory velkými písmeny. Příklad: CONTOSO.LOCAL
      • --account: Účet služby Active Directory, ve kterém jsou zaregistrované hlavní názvy služby (SPN). Příklad: sqlmi-account
      • --port: Číslo portu primárního koncového bodu SQL. Příklad: 31433
      • --dns-name: Název DNS pro primární koncový bod SQL.
      • --keytab-file: Cesta k souboru keytab.
      • --secret-name: Název tajného klíče keytab pro vygenerování specifikace.
      • --secret-namespace: Obor názvů Kubernetes, který obsahuje tajný klíč keytab.
      • --secondary-port: Číslo portu sekundárního koncového bodu SQL (volitelné). Příklad: 31434
      • --secondary-dns-name: Název DNS pro sekundární koncový bod SQL (volitelné).

      Zvolte název tajného kódu Kubernetes, který je hostitelem klávesové zkratky. Použijte obor názvů, ve kterém je spravovaná instance nasazená.

    3. Spuštěním následujícího příkazu vytvořte klávesovou zkratku:

      AD_PASSWORD=<password> ./create-sql-keytab.sh --realm <Active Directory domain in uppercase> --account <Active Directory account name> --port <endpoint port> --dns-name <endpoint DNS name> --keytab-file <keytab file name/path> --secret-name <keytab secret name> --secret-namespace <keytab secret namespace>
      

      Váš příkaz může vypadat jako v následujícím příkladu:

      AD_PASSWORD=<password> ./create-sql-keytab.sh --realm CONTOSO.LOCAL --account sqlmi-account --port 31433 --dns-name sqlmi.contoso.local --keytab-file sqlmi.keytab --secret-name sqlmi-keytab-secret --secret-namespace sqlmi-ns
      
    4. Spuštěním následujícího příkazu ověřte správnost klávesové zkratky:

      klist -kte <keytab file>
      
  7. Nasaďte tajný klíč Kubernetes pro keytab: K nasazení tajného klíče použijte soubor specifikace tajného kódu Kubernetes, který vytvoříte v předchozím kroku.

    Soubor specifikace vypadá podobně jako v tomto příkladu:

    apiVersion: v1
    kind: Secret
    type: Opaque
    metadata:
      name: <secret name>
      namespace: <secret namespace>
    data:
      keytab: <keytab content in Base64>
    

    Pokud chcete nasadit tajný klíč Kubernetes, spusťte tento příkaz:

    kubectl apply -f <file>
    

    Váš příkaz může vypadat jako v tomto příkladu:

    kubectl apply -f sqlmi-keytab-secret.yaml
    

Nastavení vlastností pro ověřování active directory

Pokud chcete nasadit službu SQL Managed Instance povolenou službou Azure Arc pro ověřování Azure Arc Active Directory, aktualizujte soubor specifikace nasazení tak, aby odkazovat na instanci konektoru Active Directory, která se má použít. Odkazování na konektor služby Active Directory v souboru specifikace SQL automaticky nastaví SQL pro ověřování active directory.

Pokud chcete v režimu klíčů spravovaných zákazníkem podporovat ověřování active Directory v SQL, nastavte v souboru specifikace nasazení následující vlastnosti. Některé vlastnosti jsou povinné a některé jsou volitelné.

Požaduje se

  • spec.security.activeDirectory.connector.name: Název existujícího vlastního prostředku konektoru služby Active Directory, který se má připojit k ověřování active directory. Pokud zadáte hodnotu této vlastnosti, implementuje se ověřování active directory.
  • spec.security.activeDirectory.accountName: Název účtu služby Active Directory pro spravovanou instanci.
  • spec.security.activeDirectory.keytabSecret: Název tajného kódu Kubernetes, který je hostitelem předem vytvořeného souboru keytab pro uživatele. Tento tajný klíč musí být ve stejném oboru názvů jako spravovaná instance. Tento parametr se vyžaduje pouze pro nasazení služby Active Directory v režimu keytab spravovaného zákazníkem.
  • spec.services.primary.dnsName: Zadejte název DNS pro primární koncový bod SQL.
  • spec.services.primary.port: Zadejte číslo portu pro primární koncový bod SQL.

Volitelné

  • spec.security.activeDirectory.connector.namespace: Obor názvů Kubernetes existujícího konektoru Active Directory, který se má připojit k ověřování active directory. Pokud nezadáte hodnotu, použije se obor názvů SQL.
  • spec.services.readableSecondaries.dnsName: Zadejte název DNS pro sekundární koncový bod SQL.
  • spec.services.readableSecondaries.port: Zadejte číslo portu sekundárního koncového bodu SQL.

Příprava souboru specifikace nasazení

Dále připravte soubor specifikace YAML pro nasazení služby SQL Managed Instance. Pro režim, který použijete, zadejte hodnoty nasazení do souboru specifikace.

Poznámka:

V souboru specifikace pro oba režimy admin-login-secret poskytuje hodnota v příkladu YAML základní ověřování. Pomocí hodnoty parametru se můžete přihlásit ke spravované instanci a pak vytvořit přihlášení pro uživatele a skupiny služby Active Directory. Další informace najdete v tématu Připojení ke službě Active Directory integrovaná spravovaná instance SQL povolená službou Azure Arc.

Následující příklad ukazuje soubor specifikace pro režim keytab spravovaný zákazníkem:

apiVersion: v1
data:
  password: <your Base64-encoded password>
  username: <your Base64-encoded username>
kind: Secret
metadata:
  name: admin-login-secret
type: Opaque
---
apiVersion: sql.arcdata.microsoft.com/v3
kind: SqlManagedInstance
metadata:
  name: <name>
  namespace: <namespace>
spec:
  backup:
    retentionPeriodInDays: 7
  dev: false
  tier: GeneralPurpose
  forceHA: "true"
  licenseType: LicenseIncluded
  replicas: 1
  security:
    adminLoginSecret: admin-login-secret
    activeDirectory:
      connector:
        name: <Active Directory connector name>
        namespace: <Active Directory connector namespace>
      accountName: <Active Directory account name>
      keytabSecret: <keytab secret name>
  services:
    primary:
      type: LoadBalancer
      dnsName: <primary endpoint DNS name>
      port: <primary endpoint port number>
    readableSecondaries:
      type: LoadBalancer
      dnsName: <secondary endpoint DNS name>
      port: <secondary endpoint port number>
  storage:
    data:
      volumes:
      - accessMode: ReadWriteOnce
        className: local-storage
        size: 5Gi
    logs:
      volumes:
      - accessMode: ReadWriteOnce
        className: local-storage
        size: 5Gi

Nasazení spravované instance

Pro režim keytab spravovaný zákazníkem i režim keytab spravované systémem nasaďte spravovanou instanci pomocí připraveného souboru YAML specifikace:

  1. Uložte soubor. Příklad v dalším kroku používá sqlmi.yaml pro název souboru specifikace, ale můžete zvolit libovolný název souboru.

  2. Spuštěním následujícího příkazu nasaďte instanci pomocí specifikace:

    kubectl apply -f <specification file name>
    

    Váš příkaz může vypadat jako v následujícím příkladu:

    kubectl apply -f sqlmi.yaml