Aracılığıyla paylaş


Azure Arc tarafından etkinleştirilen Active Directory ile tümleşik SQL Yönetilen Örneği dağıtma

Bu makalede, Active Directory kimlik doğrulaması ile Azure Arc özellikli Azure SQL Yönetilen Örneği dağıtmayı öğrenin.

Önkoşullar

SQL Yönetilen Örneği dağıtımınıza başlamadan önce şu önkoşullara sahip olduğunuzdan emin olun:

Bağlan veya gereksinimleri

Müşteri tarafından yönetilen anahtar sekmesi Active Directory bağlayıcısı ve sistem tarafından yönetilen anahtar sekmesi Active Directory bağlayıcısı, farklı gereksinimlere ve adımlara sahip farklı dağıtım modlarıdır. Her modun dağıtım sırasında belirli gereksinimleri vardır. Kullandığınız bağlayıcının sekmesini seçin.

Active Directory müşteri tarafından yönetilen anahtar sekmesi dağıtımı için şunları sağlamanız gerekir:

  • SQL için Active Directory kullanıcı hesabı
  • Kullanıcı hesabı altındaki hizmet asıl adları (SPN'ler)
  • SQL'in birincil uç noktası (ve isteğe bağlı olarak ikincil uç nokta) için DNS A (iletme) kaydı

Dağıtım için hazırlanma

Dağıtım modunuza bağlı olarak, SQL Yönetilen Örneği dağıtmaya hazırlanmak için aşağıdaki adımları tamamlayın.

Müşteri tarafından yönetilen anahtar sekmesi modunda dağıtıma hazırlanmak için:

  1. SQL uç noktaları için bir DNS adı belirleyin: İstemcilerin Kubernetes kümesi dışından bağlanacağı SQL uç noktaları için benzersiz DNS adları seçin.

    • DNS adları Active Directory etki alanında veya alt etki alanlarında olmalıdır.
    • Bu makaledeki örnekler birincil DNS adı ve sqlmi-secondary.contoso.local ikincil DNS adı için kullanılırsqlmi-primary.contoso.local.
  2. SQL uç noktalarının bağlantı noktası numaralarını tanımlayın: SQL uç noktalarının her biri için bir bağlantı noktası numarası girin.

    • Bağlantı noktası numaraları, Kubernetes kümeniz için kabul edilebilir bağlantı noktası numaraları aralığında olmalıdır.
    • Bu makaledeki örnekler birincil bağlantı noktası numarası ve 31434 ikincil bağlantı noktası numarası için kullanılır31433.
  3. Yönetilen örnek için bir Active Directory hesabı oluşturun: Yönetilen örneğinizi temsil etmek için Active Directory hesabı için bir ad seçin.

    • Ad, Active Directory etki alanında benzersiz olmalıdır.
    • Bu makaledeki örnekler Active Directory hesap adı için kullanılır sqlmi-account .

    Hesabı oluşturmak için:

    1. Etki alanı denetleyicisinde Active Directory Kullanıcıları ve Bilgisayarları aracını açın. Yönetilen örneği temsil eden bir hesap oluşturun.
    2. Active Directory etki alanı parola ilkesiyle uyumlu bir hesap parolası girin. Bu parolayı sonraki bölümlerdeki adımlardan bazılarında kullanacaksınız.
    3. Hesabın etkinleştirildiğinden emin olun. Hesabın özel izinlere ihtiyacı yoktur.
  4. Active Directory DNS sunucularında SQL uç noktaları için DNS kayıtları oluşturma: Active Directory DNS sunucularından birinde, 1. adımda seçtiğiniz DNS adı için A kayıtları (ileriye doğru arama kayıtları) oluşturun.

    • DNS kayıtları, SQL uç noktasının Kubernetes kümesi dışındaki bağlantılar için dinleyeceği IP adresine işaret etmelidir.
    • A kayıtlarıyla ilişkili olarak ters arama İşaretçisi (PTR) kayıtları oluşturmanız gerekmez.
  5. SPN oluşturma: SQL'in SQL uç noktalarına karşı Active Directory kimlik doğrulamasını kabul edebilmesi için, önceki adımda oluşturduğunuz hesaba iki SPN kaydetmeniz gerekir. Birincil uç nokta için iki SPN kaydedilmelidir. İkincil uç nokta için Active Directory kimlik doğrulaması istiyorsanız, SPN'lerin ikincil uç nokta için de kaydedilmesi gerekir.

    SPN'leri oluşturmak ve kaydetmek için:

    1. SPN'leri oluşturmak için aşağıdaki biçimi kullanın:

      MSSQLSvc/<DNS name>
      MSSQLSvc/<DNS name>:<port>
      
    2. Etki alanı denetleyicilerinden birinde, SPN'leri kaydetmek için aşağıdaki komutları çalıştırın:

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

      Komutlarınız aşağıdaki örnekteki gibi görünebilir:

      setspn -S MSSQLSvc/sqlmi-primary.contoso.local sqlmi-account
      setspn -S MSSQLSvc/sqlmi-primary.contoso.local:31433 sqlmi-account
      
    3. İkincil uç noktada Active Directory kimlik doğrulaması istiyorsanız, ikincil uç nokta için SPN'ler eklemek için aynı komutları çalıştırın:

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

      Komutlarınız aşağıdaki örnekteki gibi görünebilir:

      setspn -S MSSQLSvc/sqlmi-secondary.contoso.local sqlmi-account
      setspn -S MSSQLSvc/sqlmi-secondary.contoso.local:31434 sqlmi-account
      
  6. Hesap ve SPN'ler için girişleri olan bir anahtar sekmesi dosyası oluşturun: SQL'in Active Directory'de kimliğini doğrulayabilmesi ve Active Directory kullanıcılarından kimlik doğrulamasını kabul edebilmesi için Kubernetes gizli dizisini kullanarak bir anahtar sekmesi dosyası sağlayın.

    • Anahtar sekmesi dosyası, yönetilen örnek ve SPN'ler için oluşturulan Active Directory hesabı için şifrelenmiş girdiler içerir.

    • SQL Server bu dosyayı Active Directory'de kimlik bilgisi olarak kullanır.

    • Bir tuş sekmesi dosyası oluşturmak için birden çok araç arasından seçim yapabilirsiniz:

      • adutil: Linux için kullanılabilir (bkz. Adutil'e giriş)
      • ktutil: Linux'ta kullanılabilir
      • ktpass: Windows'da kullanılabilir
      • Özel betikler

    Özel olarak yönetilen örneğe yönelik anahtar sekmesi dosyasını oluşturmak için:

    1. Şu özel betiklerden birini kullanın:

      Betikler çeşitli parametreleri kabul eder ve anahtar sekmesini içeren Kubernetes gizli dizisi için bir anahtar sekmesi dosyası ve bir YAML belirtim dosyası oluşturur.

    2. Betiğinizde parametre değerlerini yönetilen örnek dağıtımınızın değerleriyle değiştirin.

      Giriş parametreleri için aşağıdaki değerleri kullanın:

      • --realm: Büyük harfle Active Directory etki alanı. Örnek: CONTOSO.LOCAL
      • --account: SPN'lerin kaydedildiği Active Directory hesabı. Örnek: sqlmi-account
      • --port: Birincil SQL uç noktası bağlantı noktası numarası. Örnek: 31433
      • --dns-name: Birincil SQL uç noktasının DNS adı.
      • --keytab-file: Tuş sekmesi dosyasının yolu.
      • --secret-name: Belirtim oluşturulacak anahtar sekmesi gizli dizisinin adı.
      • --secret-namespace: Anahtar sekmesi gizli dizisini içeren Kubernetes ad alanı.
      • --secondary-port: İkincil SQL uç noktası bağlantı noktası numarası (isteğe bağlı). Örnek: 31434
      • --secondary-dns-name: İkincil SQL uç noktasının DNS adı (isteğe bağlı).

      Anahtar sekmesini barındıran Kubernetes gizli dizisi için bir ad seçin. Yönetilen örneğin dağıtıldığı ad alanını kullanın.

    3. Bir anahtar sekmesi oluşturmak için aşağıdaki komutu çalıştırın:

      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>
      

      Komutunuz aşağıdaki örnekteki gibi görünebilir:

      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. Anahtar sekmesinin doğru olduğunu doğrulamak için aşağıdaki komutu çalıştırın:

      klist -kte <keytab file>
      
  7. Anahtar sekmesi için Kubernetes gizli dizisini dağıtın: Gizli diziyi dağıtmak için önceki adımda oluşturduğunuz Kubernetes gizli dizi belirtimi dosyasını kullanın.

    Belirtim dosyası şu örneğe benzer:

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

    Kubernetes gizli dizisini dağıtmak için şu komutu çalıştırın:

    kubectl apply -f <file>
    

    Komutunuz şu örnekteki gibi görünebilir:

    kubectl apply -f sqlmi-keytab-secret.yaml
    

Active Directory kimlik doğrulaması özelliklerini ayarlama

Azure Arc Active Directory kimlik doğrulaması için Azure Arc tarafından etkinleştirilen SQL Yönetilen Örneği dağıtmak için dağıtım belirtimi dosyanızı kullanılacak Active Directory bağlayıcı örneğine başvuracak şekilde güncelleştirin. SQL belirtimi dosyasında Active Directory bağlayıcısını başvurmak, Active Directory kimlik doğrulaması için SQL'i otomatik olarak ayarlar.

Müşteri tarafından yönetilen anahtar sekmesi modunda SQL üzerinde Active Directory kimlik doğrulamasını desteklemek için dağıtım belirtimi dosyanızda aşağıdaki özellikleri ayarlayın. Bazı özellikler gereklidir ve bazıları isteğe bağlıdır.

Zorunlu

  • spec.security.activeDirectory.connector.name: Active Directory kimlik doğrulaması için birleştirilmesi gereken önceden var olan Active Directory bağlayıcısı özel kaynağının adı. Bu özellik için bir değer girerseniz, Active Directory kimlik doğrulaması uygulanır.
  • spec.security.activeDirectory.accountName: Yönetilen örneğin Active Directory hesabının adı.
  • spec.security.activeDirectory.keytabSecret: Kullanıcılar için önceden oluşturulmuş anahtar sekmesi dosyasını barındıran Kubernetes gizli dizisinin adı. Bu gizli dizi yönetilen örnekle aynı ad alanında olmalıdır. Bu parametre yalnızca müşteri tarafından yönetilen anahtar sekmesi modunda Active Directory dağıtımı için gereklidir.
  • spec.services.primary.dnsName: Birincil SQL uç noktası için bir DNS adı girin.
  • spec.services.primary.port: Birincil SQL uç noktası için bir bağlantı noktası numarası girin.

İsteğe bağlı

  • spec.security.activeDirectory.connector.namespace: Active Directory kimlik doğrulaması için katılmak üzere önceden var olan Active Directory bağlayıcısının Kubernetes ad alanı. Bir değer girmezseniz SQL ad alanı kullanılır.
  • spec.services.readableSecondaries.dnsName: İkincil SQL uç noktası için bir DNS adı girin.
  • spec.services.readableSecondaries.port: İkincil SQL uç noktası için bir bağlantı noktası numarası girin.

Dağıtım belirtimi dosyanızı hazırlama

Ardından, SQL Yönetilen Örneği dağıtmak için bir YAML belirtim dosyası hazırlayın. Kullandığınız mod için belirtim dosyasına dağıtım değerlerinizi girin.

Not

Her iki modun belirtim dosyasında, admin-login-secret YAML örneğindeki değer temel kimlik doğrulaması sağlar. Parametre değerini kullanarak yönetilen örnekte oturum açabilir ve ardından Active Directory kullanıcıları ve grupları için oturum açma bilgileri oluşturabilirsiniz. Daha fazla bilgi için bkz. Azure Arc tarafından etkinleştirilen Active Directory ile tümleşik SQL Yönetilen Örneği Bağlan.

Aşağıdaki örnekte müşteri tarafından yönetilen anahtar sekmesi modu için bir belirtim dosyası gösterilmektedir:

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

Yönetilen örneği dağıtma

Hem müşteri tarafından yönetilen anahtar sekmesi modu hem de sistem tarafından yönetilen anahtar sekmesi modu için, hazırlanan belirtim YAML dosyasını kullanarak yönetilen örneği dağıtın:

  1. Dosyayı kaydedin. Sonraki adımdaki örnekte belirtim dosya adı için sqlmi.yaml kullanılmaktadır, ancak herhangi bir dosya adı seçebilirsiniz.

  2. Belirtimi kullanarak örneği dağıtmak için aşağıdaki komutu çalıştırın:

    kubectl apply -f <specification file name>
    

    Komutunuz aşağıdaki örnekteki gibi görünebilir:

    kubectl apply -f sqlmi.yaml