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:
- Doména služby Active Directory
- Nasazený kontroler dat Azure Arc
- Nasazený konektor Služby Active Directory s klíčovou tabulkou spravovanou zákazníkem nebo systémem spravovanou tabulkou klíčů
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:
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 asqlmi-secondary.contoso.local
pro sekundární název DNS.
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 a31434
číslo sekundárního portu.
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:
- 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.
- 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.
- Ujistěte se, že je účet povolený. Účet nepotřebuje žádná zvláštní oprávnění.
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.
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):
K vytvoření hlavních názvů služby (SPN) použijte následující formát:
MSSQLSvc/<DNS name> MSSQLSvc/<DNS name>:<port>
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
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
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 Linuxuktpass
: K dispozici ve Windows- Vlastní skripty
Vygenerování souboru keytab speciálně pro spravovanou instanci:
Použijte jeden z těchto vlastních skriptů:
- Linux: create-sql-keytab.sh
- Windows Server: create-sql-keytab.ps1
Skripty přijímají několik parametrů a generují soubor keytab a soubor specifikace YAML pro tajný klíč Kubernetes, který obsahuje klíčtab.
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á.
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
Spuštěním následujícího příkazu ověřte správnost klávesové zkratky:
klist -kte <keytab file>
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:
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.
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