Wdrażanie zintegrowanego z usługą Active Directory wystąpienia zarządzanego SQL włączonego przez usługę Azure Arc
Z tego artykułu dowiesz się, jak wdrożyć usługę Azure SQL Managed Instance z obsługą usługi Azure Arc przy użyciu uwierzytelniania usługi Active Directory.
Wymagania wstępne
Przed rozpoczęciem wdrażania usługi SQL Managed Instance upewnij się, że masz następujące wymagania wstępne:
- Domena usługi Active Directory
- Wdrożony kontroler danych usługi Azure Arc
- Wdrożony łącznik usługi Active Directory z kartą klucza zarządzanego przez klienta lub kartą klucza zarządzanego przez system
Wymagania dotyczące łącznika
Łącznik usługi Active Directory zarządzany przez klienta i łącznik usługi Active Directory zarządzany przez system to różne tryby wdrażania, które mają różne wymagania i kroki. Każdy tryb ma określone wymagania podczas wdrażania. Wybierz kartę dla używanego łącznika.
W przypadku wdrożenia tab kluczy zarządzanych przez klienta usługi Active Directory należy podać następujące elementy:
- Konto użytkownika usługi Active Directory dla bazy danych SQL
- Nazwy główne usługi (SPN) na koncie użytkownika
- Rekord DNS A (do przodu) dla podstawowego punktu końcowego SQL (i opcjonalnie pomocniczy punkt końcowy)
Przygotowanie do wdrożenia
W zależności od trybu wdrażania wykonaj następujące kroki, aby przygotować się do wdrożenia usługi SQL Managed Instance.
Aby przygotować się do wdrożenia w trybie tab kluczy zarządzanych przez klienta:
Zidentyfikuj nazwę DNS dla punktów końcowych SQL: wybierz unikatowe nazwy DNS dla punktów końcowych SQL, z którymi klienci będą łączyć się spoza klastra Kubernetes.
- Nazwy DNS powinny znajdować się w domenie usługi Active Directory lub w jej domenach potomnych.
- Przykłady w tym artykule są używane
sqlmi-primary.contoso.local
dla podstawowej nazwy DNS isqlmi-secondary.contoso.local
pomocniczej nazwy DNS.
Zidentyfikuj numery portów dla punktów końcowych SQL: wprowadź numer portu dla każdego z punktów końcowych SQL.
- Numery portów muszą być w dopuszczalnym zakresie numerów portów dla klastra Kubernetes.
- Przykłady w tym artykule są używane
31433
dla numeru portu podstawowego i31434
numeru portu pomocniczego.
Utwórz konto usługi Active Directory dla wystąpienia zarządzanego: wybierz nazwę konta usługi Active Directory do reprezentowania wystąpienia zarządzanego.
- Nazwa musi być unikatowa w domenie usługi Active Directory.
- Przykłady w tym artykule są używane
sqlmi-account
dla nazwy konta usługi Active Directory.
Aby utworzyć konto:
- Na kontrolerze domeny otwórz narzędzie Użytkownicy i komputery usługi Active Directory. Utwórz konto reprezentujące wystąpienie zarządzane.
- Wprowadź hasło konta zgodne z zasadami haseł domeny usługi Active Directory. To hasło będzie używane w niektórych krokach w następnych sekcjach.
- Upewnij się, że konto jest włączone. Konto nie wymaga żadnych specjalnych uprawnień.
Utwórz rekordy DNS dla punktów końcowych SQL na serwerach DNS usługi Active Directory: w jednym z serwerów DNS usługi Active Directory utwórz rekordy (rekordy wyszukiwania do przodu) dla nazwy DNS wybranej w kroku 1.
- Rekordy DNS powinny wskazywać adres IP, na który punkt końcowy SQL będzie nasłuchiwać połączeń spoza klastra Kubernetes.
- Nie musisz tworzyć rekordów wskaźnika wyszukiwania wstecznego (PTR) w skojarzeniu z rekordami A.
Tworzenie nazw SPN: aby program SQL mógł zaakceptować uwierzytelnianie usługi Active Directory względem punktów końcowych SQL, należy zarejestrować dwie nazwy SPN na koncie utworzonym w poprzednim kroku. Dla podstawowego punktu końcowego należy zarejestrować dwie nazwy SPN. Jeśli chcesz uwierzytelniania usługi Active Directory dla pomocniczego punktu końcowego, nazwy SPN muszą być również zarejestrowane dla pomocniczego punktu końcowego.
Aby utworzyć i zarejestrować nazwy SPN:
Użyj następującego formatu, aby utworzyć nazwy SPN:
MSSQLSvc/<DNS name> MSSQLSvc/<DNS name>:<port>
Na jednym z kontrolerów domeny uruchom następujące polecenia, aby zarejestrować nazwy SPN:
setspn -S MSSQLSvc/<DNS name> <account> setspn -S MSSQLSvc/<DNS name>:<port> <account>
Polecenia mogą wyglądać podobnie do następującego przykładu:
setspn -S MSSQLSvc/sqlmi-primary.contoso.local sqlmi-account setspn -S MSSQLSvc/sqlmi-primary.contoso.local:31433 sqlmi-account
Jeśli chcesz uwierzytelniania usługi Active Directory w pomocniczym punkcie końcowym, uruchom te same polecenia, aby dodać nazwy SPN dla pomocniczego punktu końcowego:
setspn -S MSSQLSvc/<DNS name> <account> setspn -S MSSQLSvc/<DNS name>:<port> <account>
Polecenia mogą wyglądać podobnie do następującego przykładu:
setspn -S MSSQLSvc/sqlmi-secondary.contoso.local sqlmi-account setspn -S MSSQLSvc/sqlmi-secondary.contoso.local:31434 sqlmi-account
Wygeneruj plik karty kluczy zawierający wpisy dla konta i nazw SPN: aby program SQL mógł uwierzytelnić się w usłudze Active Directory i zaakceptować uwierzytelnianie od użytkowników usługi Active Directory, podaj plik karty kluczy przy użyciu wpisu tajnego kubernetes.
Plik keytab zawiera zaszyfrowane wpisy dla konta usługi Active Directory wygenerowanego dla wystąpienia zarządzanego i nazw SPN.
Program SQL Server używa tego pliku jako poświadczenia do usługi Active Directory.
Możesz wybrać spośród wielu narzędzi, aby wygenerować plik keytab:
adutil
: Dostępne dla systemu Linux (zobacz Wprowadzenie do narzędzia adutil)ktutil
: dostępne w systemie Linuxktpass
: dostępne w systemie Windows- Skrypty niestandardowe
Aby wygenerować plik keytab specjalnie dla wystąpienia zarządzanego:
Użyj jednego z tych skryptów niestandardowych:
- Linux: create-sql-keytab.sh
- Windows Server: create-sql-keytab.ps1
Skrypty akceptują kilka parametrów i generują plik keytab oraz plik specyfikacji YAML dla wpisu tajnego kubernetes zawierającego kartę klucza.
W skrypcie zastąp wartości parametrów wartościami wdrożenia wystąpienia zarządzanego.
W przypadku parametrów wejściowych użyj następujących wartości:
--realm
: domena usługi Active Directory w wielkiej litery. Przykład:CONTOSO.LOCAL
--account
: konto usługi Active Directory, na którym są zarejestrowane nazwy SPN. Przykład:sqlmi-account
--port
: podstawowy numer portu punktu końcowego SQL. Przykład:31433
--dns-name
: nazwa DNS podstawowego punktu końcowego SQL.--keytab-file
: ścieżka do pliku keytab.--secret-name
: nazwa wpisu tajnego tab klucza w celu wygenerowania specyfikacji elementu .--secret-namespace
: Przestrzeń nazw kubernetes zawierająca klucz tajny.--secondary-port
: pomocniczy numer portu punktu końcowego SQL (opcjonalnie). Przykład:31434
--secondary-dns-name
: nazwa DNS pomocniczego punktu końcowego SQL (opcjonalnie).
Wybierz nazwę wpisu tajnego kubernetes, który hostuje kartę klucza. Użyj przestrzeni nazw, w której jest wdrażane wystąpienie zarządzane.
Uruchom następujące polecenie, aby utworzyć kartę klucza:
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>
Polecenie może wyglądać podobnie do następującego przykładu:
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
Uruchom następujące polecenie, aby sprawdzić, czy tabułka klucza jest poprawna:
klist -kte <keytab file>
Wdróż wpis tajny kubernetes dla tabu klucza: użyj pliku specyfikacji wpisu tajnego Kubernetes utworzonego w poprzednim kroku, aby wdrożyć wpis tajny.
Plik specyfikacji wygląda podobnie do tego przykładu:
apiVersion: v1 kind: Secret type: Opaque metadata: name: <secret name> namespace: <secret namespace> data: keytab: <keytab content in Base64>
Aby wdrożyć wpis tajny platformy Kubernetes, uruchom następujące polecenie:
kubectl apply -f <file>
Polecenie może wyglądać następująco:
kubectl apply -f sqlmi-keytab-secret.yaml
Ustawianie właściwości uwierzytelniania usługi Active Directory
Aby wdrożyć wystąpienie zarządzane SQL włączone przez usługę Azure Arc na potrzeby uwierzytelniania usługi Azure Arc Active Directory, zaktualizuj plik specyfikacji wdrożenia, aby odwołać się do wystąpienia łącznika usługi Active Directory do użycia. Odwoływanie się do łącznika usługi Active Directory w pliku specyfikacji SQL automatycznie konfiguruje program SQL na potrzeby uwierzytelniania usługi Active Directory.
Aby obsługiwać uwierzytelnianie usługi Active Directory w usłudze SQL w trybie karty kluczy zarządzanych przez klienta, ustaw następujące właściwości w pliku specyfikacji wdrożenia. Niektóre właściwości są wymagane, a niektóre są opcjonalne.
Wymagania
spec.security.activeDirectory.connector.name
: nazwa istniejącego wcześniej zasobu niestandardowego łącznika usługi Active Directory do przyłączenia do uwierzytelniania usługi Active Directory. Jeśli wprowadzisz wartość dla tej właściwości, uwierzytelnianie usługi Active Directory zostanie zaimplementowane.spec.security.activeDirectory.accountName
: nazwa konta usługi Active Directory dla wystąpienia zarządzanego.spec.security.activeDirectory.keytabSecret
: nazwa wpisu tajnego kubernetes, który hostuje wstępnie utworzony plik tab klucza dla użytkowników. Ten wpis tajny musi znajdować się w tej samej przestrzeni nazw co wystąpienie zarządzane. Ten parametr jest wymagany tylko dla wdrożenia usługi Active Directory w trybie tab klucza zarządzanego przez klienta.spec.services.primary.dnsName
: wprowadź nazwę DNS podstawowego punktu końcowego SQL.spec.services.primary.port
: wprowadź numer portu podstawowego punktu końcowego SQL.
Opcjonalnie
spec.security.activeDirectory.connector.namespace
: Przestrzeń nazw kubernetes istniejącego łącznika usługi Active Directory do przyłączenia do uwierzytelniania usługi Active Directory. Jeśli nie wprowadzisz wartości, używana jest przestrzeń nazw SQL.spec.services.readableSecondaries.dnsName
: wprowadź nazwę DNS pomocniczego punktu końcowego SQL.spec.services.readableSecondaries.port
: wprowadź numer portu pomocniczego punktu końcowego SQL.
Przygotowywanie pliku specyfikacji wdrożenia
Następnie przygotuj plik specyfikacji YAML do wdrożenia usługi SQL Managed Instance. W przypadku używanego trybu wprowadź wartości wdrożenia w pliku specyfikacji.
Uwaga
W pliku specyfikacji dla obu trybów admin-login-secret
wartość w przykładzie YAML zapewnia uwierzytelnianie podstawowe. Możesz użyć wartości parametru, aby zalogować się do wystąpienia zarządzanego, a następnie utworzyć identyfikatory logowania dla użytkowników i grup usługi Active Directory. Aby uzyskać więcej informacji, zobacz Connect to Active Directory-integrated SQL Managed Instance enabled by Azure Arc (Nawiązywanie połączenia z zintegrowaną z usługą Active Directory usługą SQL Managed Instance włączoną przez usługę Azure Arc).
W poniższym przykładzie przedstawiono plik specyfikacji trybu tab zarządzania kluczami zarządzanymi przez klienta:
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
Wdrażanie wystąpienia zarządzanego
W przypadku trybu tab klucza zarządzanego przez klienta i trybu tab zarządzanego przez system wdróż wystąpienie zarządzane przy użyciu przygotowanego pliku YAML specyfikacji:
Zapisz plik. W przykładzie w następnym kroku użyto pliku sqlmi.yaml jako nazwy pliku specyfikacji, ale możesz wybrać dowolną nazwę pliku.
Uruchom następujące polecenie, aby wdrożyć wystąpienie przy użyciu specyfikacji:
kubectl apply -f <specification file name>
Polecenie może wyglądać podobnie do następującego przykładu:
kubectl apply -f sqlmi.yaml