プロファイル適用性: レベル1
Azure Kubernetes Service (AKS) クラスター内の
azure.json
ファイルは、Azure用のKubernetesクラウドプロバイダ統合で使用される設定ファイルです。このファイルには、KubernetesクラスターがAzureリソースと効果的に連携するための重要な詳細が含まれています。これはAzureクラウドプロバイダ設定の一部であり、Kubernetesコンポーネントがロードバランサー、ストレージ、ネットワーキングなどの機能のためにAzureサービスと通信できるようにします。ファイルが
root:root
の所有であることを確認してください。AKSの
azure.json
ファイルには通常以下が含まれます:-
テナントID: AKSクラスターが存在するAzureテナントID。
-
サブスクリプションID: 請求とリソース管理に使用されるAzureサブスクリプションID。
-
AAD Client ID: KubernetesクラウドプロバイダがAzureリソースとやり取りするために使用するAzure Active Directory (AAD) アプリケーションクライアントID。
-
AAD Client Secret:AADアプリケーションのシークレット。
-
Resource Group: AKSクラスターリソースが配置されているリソースグループの名前。
-
場所: AKS クラスターがデプロイされている Azure リージョン。
-
VM Type:は、クラスターで使用されるVMの種類を指定します (例: 標準VMまたは仮想マシンスケールセット)。
-
Subnet Name, Security Group Name, Vnet Name, and Vnet Resource Group: クラスターのネットワーク詳細。
-
Route Table Name: クラスターのルートテーブルの名前。
-
Storage Account Type: Kubernetesの永続ボリュームに使用するストレージアカウントのデフォルトタイプ。
![]() |
注意Azure AKSのドキュメントでデフォルト値を確認してください。
|
監査
Method 1
-
ワーカーノードにSSH接続します。
-
Kubeletサービスが実行中かどうかを確認するには:
sudo systemctl status kubelet
出力はActive: active (running) since..
を返す必要があります -
各ノードで次のコマンドを実行して、適切なKubelet設定ファイルを見つけてください。
ps -ef | grep kubelet
上記のコマンドの出力は、--config /etc/kubernetes/azure.json
のようなものを返すはずです。これはKubeletの設定ファイルの場所です。 -
次のコマンドを実行します。
stat -c %U:%G /etc/kubernetes/azure.json
上記のコマンドの出力は、Kubelet構成ファイルの所有権です。 -
所有権が
root:root
に設定されていることを確認してください。
Method 2
特権ポッドを作成して実行する
-
ホストのファイルシステムにアクセスするためには、十分な特権を持つポッドを実行する必要があります。これは、hostPathボリュームを使用してノードのファイルシステムをポッドにマウントするポッドをデプロイすることで実現できます。例のポッド定義:
apiVersion: v1 kind: Pod metadata: name: file-check spec: volumes: - name: host-root hostPath: path: / type: Directory containers: - name: nsenter image: busybox command: ["sleep", "3600"] volumeMounts: - name: host-root mountPath: /host securityContext: privileged: true
-
これをファイル (例: file-check-pod.yaml) に保存し、ポッドを作成してください。
kubectl apply -f file-check-pod.yaml
-
ポッドが実行されているときに、その中にexecしてノード上のファイル所有権を確認できます。
kubectl exec -it file-check -- sh
-
現在、ポッド内のシェルにいますが、
/host
ディレクトリを通じてノードのファイルシステムにアクセスし、ファイルの所有権を確認できます。ls -l /host/etc/kubernetes/azure.json
-
ファイルが存在する場合、所有者が
root root
であることを確認してください。
修復
監査手順で特定された構成ファイルの場所に基づいて、以下のコマンドを実行してください。
chown root:root /etc/kubernetes/azure.json