ビュー:
プロファイル適用性: レベル1
Azure Kubernetes Service (AKS) クラスター内のazure.jsonファイルは、Azure用のKubernetesクラウドプロバイダ統合で使用される構成ファイルです。このファイルには、KubernetesクラスターがAzure Resourcesと効果的に連携するための重要な詳細が含まれています。これはAzure Cloud Provider構成の一部であり、Kubernetesコンポーネントがロードバランサー、ストレージ、ネットワーキングなどの機能のためにAzure Servicesと通信できるようにします。
ファイルの権限が644以上の制限に設定されていることを確認してください。
AKS構造のazure.jsonファイルには通常以下が含まれます:
  • テナントID: AKS Clusterが存在するAzureテナントID。
  • Subscription ID: 請求とリソース管理に使用されるAzure Subscription IDです。
  • AADクライアントID: KubernetesクラウドプロバイダがAzure Resourcesとやり取りするために使用するAzure Active Directory (AAD) アプリケーションクライアントID。
  • AADクライアントシークレット:AADアプリケーションのシークレット。
  • リソースグループ: AKS Clusterリソースが配置されているリソースグループの名前。
  • 場所: AKS Clusterが展開されているAzureリージョン。
  • VMタイプ: クラスターで使用されるVMのタイプを指定します (例: 標準VMまたはVirtual Machine Scale Sets)。
  • サブネット名、セキュリティグループ名、Vnet名、およびVnetリソースグループ: クラスターのネットワーク詳細。
  • ルートテーブル名: クラスターのルートテーブルの名前。
  • ストレージアカウントの種類: Kubernetesの永続ボリュームに使用するデフォルトのストレージアカウントの種類。
注意
注意
Azure AKS のドキュメントでデフォルト値を確認してください。

監査

Method 1
  1. 関連するワーカーノードにSSH接続してください。
  2. Kubeletサービスが実行されているか確認するには、次のコマンドを入力してください。
    sudo systemctl status kubelet
    出力はActive: active (running)を返す必要があります。
  3. 各ノードで次のコマンドを実行して、適切なKubelet設定ファイルを見つけてください。
    ps -ef | grep kubelet
    出力は--config /etc/kubernetes/azure.jsonのようなものである必要があります。これはKubeletの設定ファイルの場所です。
  4. 次のコマンドを実行します。
    stat -c %a /etc/kubernetes/azure.json
    アクセス許可が644以上に制限されていることを確認してください。
Method 2
特権ポッドを作成して実行する
  1. ホストのファイルシステムにアクセスするために十分な特権を持つポッドを実行します。これを行うには、hostPathボリュームを使用してノードのファイルシステムをポッドにマウントするポッドをデプロイします。
    ホストのルートをポッド内の/hostにマウントするシンプルなポッド定義の例:
    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
    ファイルが指定されていて存在する場合、パーミッションが644以上に制限されていることを確認してください。

修復

監査手順で特定された設定ファイルの場所を使用して、次のコマンドを実行してください。
chmod 644 /etc/kubernetes/azure.json