ビュー:
プロファイル適用性: レベル1
Azure Kubernetes Service (AKS) クラスター内のazure.jsonファイルは、Azure用のKubernetesクラウドプロバイダ統合で使用される設定ファイルです。このファイルには、KubernetesクラスターがAzureリソースと効果的に連携するための重要な詳細が含まれています。これはAzureクラウドプロバイダ設定の一部であり、Kubernetesコンポーネントがロードバランサー、ストレージ、ネットワーキングなどの機能のためにAzureサービスと通信できるようにします。
azure.jsonファイルの権限が644以上の制限に設定されていることを確認してください。
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
  1. Kubeletサービスが実行中かどうかを確認するには:
    sudo systemctl status kubelet
    出力はActive: active (running) since..を返す必要があります
  2. 各ノードで次のコマンドを実行して、適切なKubelet設定ファイルを見つけてください。
    ps -ef | grep kubelet
    上記のコマンドの出力は、Kubeletの設定ファイルの場所である--config /etc/kubernetes/azure.jsonに類似したものを返す必要があります。
  3. 次のコマンドを実行します。
    stat -c %a /etc/kubernetes/azure.json
    上記のコマンドの出力は、Kubelet設定ファイルの権限です。
  4. 権限が644またはそれよりも制限されていることを確認してください。
Method 2
特権ポッドを作成して実行
  1. ホストのファイルシステムにアクセスするためには、十分な権限を持つポッドを実行する必要があります。これは、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
          
  2. これをファイル (例: file-check-pod.yaml) に保存して、ポッドを作成してください。
    kubectl apply -f file-check-pod.yaml
  3. ポッドが実行されているときに、その中にexecしてノード上のファイル権限を確認できます。
    kubectl exec -it file-check -- sh
  4. 現在、ポッド内のシェルにいますが、/hostディレクトリを通じてノードのファイルシステムにアクセスし、ファイルの権限レベルを確認できます。
    ls -l /host/etc/kubernetes/azure.json
  5. ファイルが存在する場合、パーミッションが644またはそれよりも制限されていることを確認してください。

修復

各ワーカーノードで、システム上のファイルの場所に基づいて以下のコマンドを実行してください。
chmod 644 <azure.json file>