適用対象:Linux 上の SQL Server
このチュートリアルでは、コンテナーで実行されている SQL Server に対して Microsoft Entra ID 認証を手動で有効にする手順について説明します。 Azure Arc は現在、このシナリオの コンテナー ワークロード をサポートしていないため、スタンドアロン コンテナーと Kubernetes デプロイ用に Microsoft Entra ID 認証を直接構成できます。
他のすべてのデプロイ シナリオでは、Azure Arc を使用して Microsoft Entra ID 認証を構成する必要があります。
前提条件
Microsoft Entra ID はテナント用に構成されています。
SQL Server は Microsoft Entra ID エンドポイントに到達できます。
Microsoft Entra アプリケーションが登録されています。
チュートリアルの指示に従ってください:SQL ServerのMicrosoft Entra認証を設定し、アプリ登録でアプリケーションを登録してください。
サポートされている SQL Server Linux コンテナー イメージ。
kubectlを使用した Docker または Kubernetes クラスターへのアクセス。
構成の概要
デプロイ モデルには次のものが必要です。
Microsoft Entra アプリケーションに関連付けられている証明書
次の構成で構成された SQL Server:
- 証明書のパス
- Microsoft Entra アプリケーション (クライアント) ID
- Microsoft Entra テナント ID
SQL Server で作成された Microsoft Entra ログインが少なくとも 1 つ。
環境の違いは、証明書と構成の提供方法です。
- コンテナー: 環境変数またはマウントされたファイル
- Kubernetes: コンフィグマップ とシークレット
証明書を作成する
Microsoft Entra ID に対して認証を行うには、SQL Server の証明書が必要です。 運用環境では、信頼された証明機関 (CA) によって発行された証明書を使用します。
この例では、OpenSSL を使用して自己署名証明書を作成できます。
次のコマンドを使用して自己署名証明書を作成し、画面の指示に従います。
openssl req -x509 -newkey rsa:4096 \ -keyout mssql-entra-id-key.pem \ -out mssql-entra-id-cert.pem \ -days 365 -nodesファイルを確認します。
ls -lrt | grep mssql-entra-id結果セットは次のとおりです。
-rw------- 1 user user 3272 Sep 11 19:13 mssql-entra-id-key.pem -rw-rw-r-- 1 user user 2139 Sep 11 19:13 mssql-entra-id-cert.pem証明書を
.pfxに変換します。 エクスポート パスワードは空のままにします。openssl pkcs12 \ -inkey mssql-entra-id-key.pem \ -in mssql-entra-id-cert.pem \ -nodes -export \ -out mssql-entra-id.pfxImportant
エクスポート パスワードを使用すると、SQL Server の起動に失敗します。
ファイルを確認します。
ls -lrt | grep mssql-entra-id結果セットは次のとおりです。
-rw------- 1 user user 3272 Sep 11 19:13 mssql-entra-id-key.pem -rw-rw-r-- 1 user user 2139 Sep 11 19:13 mssql-entra-id-cert.pem -rw-rw-r-- 1 user user 2139 Sep 11 19:14 mssql-entra-id.pfx登録されている Microsoft Entra アプリケーションに パブリック証明書 をアップロードします。 CA から信頼された証明書を取得する場合は、代わりにその証明書をアップロードします。
SQL Server コンテナーの構成 (スタンドアロン)
Microsoft Entra 認証が有効になっているコンテナーで SQL Server を実行します。
docker run --name sql2025-entra \ -e ACCEPT_EULA=Y \ -e MSSQL_SA_PASSWORD='<password>' \ -e MSSQL_AAD_CLIENT_ID='<client-id>' \ -e MSSQL_AAD_PRIMARY_TENANT='<tenant-id>' \ -e MSSQL_AAD_CERTIFICATE_FILE_PATH='/var/opt/mssql/mssql-entra-id.pfx' \ -p 1433:1433 \ -v "$PWD/mssql-entra-id.pfx:/var/opt/mssql/mssql-entra-id.pfx:ro" \ -d mcr.microsoft.com/mssql/server:2025-latestコンテナー内を確認します。
docker exec -it <container-id> bash cat /var/opt/mssql/log/errorlog | grep Entra結果セットは次のとおりです。
Microsoft Entra ID authentication is enabled. This is an informational message only; no user action is required.
Microsoft Entraのログイン作成を続けてください。
Kubernetes で SQL Server コンテナーを構成する
次の図では、このデプロイの手順について説明します。
手順 1: 証明書のシークレットを作成する
.pfxファイルをエンコードします。base64 -w0 mssql-entra-id.pfxmssql-entra-cert.yamlを作成します。apiVersion: v1 kind: Secret metadata: name: mssql-entra-cert type: Opaque data: mssql-entra-id: <BASE64_ENCODED_CERT>シークレットを適用します。
kubectl apply -f mssql-entra-cert.yaml
ステップ2: sa パスワードの秘密を作成する
以下のコマンドは、SQL Serverデプロイメントにサインインするために使うsaアカウントパスワードを保存するSecretを作成します。
<password>を強力なパスワードに置き換えます。
Note
パスワードは SQL Server の既定のパスワード ポリシーに従う必要があります。 既定では、パスワードの長さは少なくとも 8 文字で、大文字、小文字、10 進数の数字、記号の 4 種類のうち 3 種類を含んでいる必要があります。 パスワードには最大 128 文字まで使用できます。 可能な限り長く複雑なパスワードを使用してください。
kubectl create secret generic mssql \
--from-literal=MSSQL_SA_PASSWORD=<password>
手順 3: mssql.conf の ConfigMap を作成する
この手順では、 <client-id> をクライアント ID に置き換え、 <tenant-id> を Microsoft Entra ID の登録済みアプリケーションのテナント ID に置き換えます。 これらの詳細は、Azure portal から取得できます。
mssql-conf.yamlという名前の ConfigMap ファイルを作成します。apiVersion: v1 kind: ConfigMap metadata: name: mssql-conf data: mssql.conf: | [EULA] accepteula = Y [sqlagent] enabled = false [licensing] azurebilling = false [network] aadcertificatefilepath = /var/opt/mssql/mssql-entra-id.pfx aadclientid = <client-id> aadprimarytenant = <tenant-id>ConfigMap を適用します。
kubectl apply -f mssql-conf.yaml
手順 4: SQL Server をデプロイする
この手順では、SQL Server 2025 (17.x) を展開し、Microsoft Entra ID 認証を有効にします。 ConfigMapとSecretsはSQL Serverコンテナにマウントし、対応SQL Server Linuxイメージ(例:mcr.microsoft.com/mssql/server:2025-latest)を使う必要があります。
mssql.confの証明書ファイル パスがマウントされたパスと一致し、コンテナーが必要なファイル システムのアクセス許可で実行されていることを確認します。
次の内容を含む
mssql-deployment.yamlというファイルを作成します。apiVersion: apps/v1 kind: Deployment metadata: name: mssql-2025 labels: app: mssql-2025 spec: replicas: 1 selector: matchLabels: app: mssql-2025 template: metadata: labels: app: mssql-2025 spec: securityContext: fsGroup: 10001 containers: - name: mssql image: mcr.microsoft.com/mssql/server:2025-latest imagePullPolicy: IfNotPresent ports: - name: tds containerPort: 1433 env: - name: ACCEPT_EULA value: "Y" - name: MSSQL_SA_PASSWORD valueFrom: secretKeyRef: name: mssql key: MSSQL_SA_PASSWORD - name: MSSQL_PID value: "Developer" volumeMounts: - name: mssql-conf mountPath: /var/opt/mssql/mssql.conf subPath: mssql.conf readOnly: true - name: mssql-entra-cert mountPath: /var/opt/mssql/mssql-entra-id.pfx subPath: mssql-entra-id readOnly: true volumes: - name: mssql-conf configMap: name: mssql-conf items: - key: mssql.conf path: mssql.conf - name: mssql-entra-cert secret: secretName: mssql-entra-cert items: - key: mssql-entra-id path: mssql-entra-id.pfxデプロイメントを展開します。
kubectl apply -f mssql-deployment.yaml
手順 5: サービスを作成する
この手順では、SQL Server に接続するロード バランサー サービスを作成します。
mssql-service.yamlという名前のサービス ファイルを作成します。apiVersion: v1 kind: Service metadata: name: mssql labels: app: mssql-2025 spec: type: LoadBalancer selector: app: mssql-2025 ports: - name: tds port: 1433 targetPort: 1433サービスを適用します。
kubectl apply -f mssql-service.yaml
Microsoft Entraのログイン作成を続けてください。
Microsoft Entra ログインを作成する
Important
サーバーまたはコンテナーで IPv6 が有効になっている場合は、IPv6 エンドポイントが到達可能でルーティング可能であることを確認してください。または、Microsoft Entra IDへの認証が失敗する可能性があります。 詳細については、「Microsoft Entra認証を使用した IPv6 接続」を参照してください。
前に構成した
saアカウントとパスワードを使用して、SQL Server Management Studio (SSMS) を使用して SQL Server コンテナーに接続します。Microsoft Entra ベースのログインを作成します。
CREATE LOGIN [user@contoso.com] FROM EXTERNAL PROVIDER;必要に応じて、microsoft Entra アカウントを sysadmin 固定サーバー ロールに追加して、
saアカウントを無効にすることができます。 詳細については、 ベストプラクティスとして「saアカウントを無効にする」をご覧ください。EXECUTE sp_addsrvrolemember @loginame = 'user@contoso.com', @rolename = 'sysadmin';
パスワード、統合認証、または多要素認証 (MFA) を使用して Microsoft Entra ID を使用して認証できるようになりました。
ベストプラクティスとして sa アカウントを無効にしましょう
インストール後に初めてシステム管理者 (sa) アカウントを使用して SQL Server インスタンスに接続するときは、次の手順に従い、その後すぐにセキュリティのベスト プラクティスとして sa アカウントを無効にすることが重要です。
新しいログインを作成し、sysadmin サーバー ロールのメンバーにします。
コンテナーとコンテナー以外のどちらがデプロイされているかに応じて、Windows 認証を有効にして、新しい Windows ベースのログインを作成し、それを sysadmin サーバー ロールに追加します。
それ以外の場合は、SQL Server 認証を使用してログインを作成し、sysadmin サーバー ロールに追加します。
作成した新しいログインを使用してSQL Serverインスタンスに接続します。
セキュリティのベスト プラクティスで推奨されているように、
saアカウントを無効にします。