Trending keywords: security, cloud, container,

Azure Kubernetes (AKS) セキュリティのベストプラクティス

SHARE:

Azure Kubernetes Serviceとは?

Azure Kubernetes Service(AKS)は、Microsoft AzureをベースとしたKubernetesクラスタ用のフルマネージド・コンテナ・オーケストレーション・サービスです。Kubernetesは主要なコンテナ管理プラットフォームとなっていますが、Kubernetesインフラストラクチャを誰が管理するのかという疑問が生じます。

AKSは、運用のオーバーヘッドをAzureにオフロードすることで、マネージドKubernetesクラスタのデプロイを簡素化します。ホステッドKubernetesサービスとして、Azureはヘルスモニタリングやメンテナンスなどの重要なタスクを処理します。KubernetesマスターはMicrosoft Azureによって制御されるため、ユーザーはエージェントノードの管理と保守のみを行います。AKSは完全に無料であり、クラスタ内のエージェントノードにのみ支払いが必要であり、マスターには支払いが必要ありません。

AKSはオープンソースで完全に管理されたKubernetesコンテナサービスを提供するため、コンテナオーケストレーションの専門知識がないユーザーでも、コンテナ化されたアプリケーションを簡単にデプロイして管理できます。プロビジョニング、リソースのスケーリング、および需要に応じたアップグレードの責任はAzureにオフロードされるため、DevOpsチームはアプリケーションの構築と迅速な提供に専念できます。AKSを使用する主な利点の1つは、サーバーレスの継続的インテグレーションと継続的デプロイメント(CI/CD)とともに、開発プロセスと運用プロセスを単一のプラットフォームで統一できることです。これにより、企業のクラウドサービス・エクスペリエンスが全体的に向上します。

責任モデルのセキュリティについての議論なしに、クラウドサービスについて語ることはできません。AKS環境でマネージドサービスを稼働させると、誰が何に責任を持つのかという懸念が生じます。責任はユーザーにあるのでしょうか、それともサービスプロバイダーにあるのでしょうか?クラウドのセキュリティであれ、クラウドのセキュリティであれ、AKSでKubernetesコンテナアプリケーションを構築、実行、デプロイする際には、さまざまなベストプラクティスを考慮する必要があります。このガイドでは、AKSが提供する機能、AKSのセキュリティへの要求、AKSのセキュリティを実現するためのベストプラクティスに光を当てます。

AKSの特徴

前述の通り、AKSはKubernetesの運用における複雑な部分やインフラ全般をMicrosoft Azureに任せることで、フルマネージドサービスを提供しています。主な機能としては、以下のようなものがあります:

セキュリティ、アクセス、および監視

AKSは、Azure Active Directory(Azure AD)を統合し、Kubernetesの役割ベースのアクセス制御(RBAC)を使用してリソースのアクセス許可を監視することで、セキュリティと管理を向上させます。また、一元化された可視化ダッシュボードを使用して、Kubernetesクラスタとリソースの健全性ステータスを監視します。

アイデンティティ管理とセキュリティ管理

AKSは、Kubernetesロールベースアクセス制御(RBAC)を使用して、Kubernetesクラスタへのアクセスを設定し、Kubernetesネームスペースとリソースへの監視されたID管理とメンバーシップベースのアクセスを支援します。RBACは、統合サインオン機能を使用して、Kubernetesリソースにアクセスするために認証される前に、Azure ADユーザーとグループが適切な権限を持っていることを確認します。

統合されたログと監視

クラウドコンピューティング全体に共通する重要な特徴の1つは、オブザーバビリティ、監視、およびロギングに優先順位が与えられていることです。AKSは、Azure Monitor for Container Healthを使用して、Kubernetesノード、クラスタ、コントローラのヘルスステータスを観察し、コンテナアプリケーション内に展開されたパフォーマンスメトリクスのログ情報を収集します。

クラスタとノード

AKSはAzure仮想マシン(VM)上でKubernetesクラスタを実行するため、異なるノードプール、オペレーティングシステム、Windows Serverコンテナを混在させることができます。また、AKSノードでは、ポッドとノードの接続、クラスタコンポーネントのアップグレード、GPUの使用が可能です。

Azure Kubernetesサービスセキュリティ

クラウド・サービスに関連する懸念事項の1つはセキュリティです。特に、アプリの管理権限の一部をクラウド・サービス・プロバイダーに委ねる必要があるためです。AKS 上で実行するコンテナ化アプリケーションを構築する場合、コンテナの安全性を確保し、エンドツーエンドのパイプラインを保護する必要があります。前述のとおり、Microsoft Defender for Cloud、Active Directory、Azure Key Vault、ネットワークセキュリティグループ、Azure Policy、オーケストレーテッドクラスターアップグレードなどのコンポーネントを含むクラウドのセキュリティを確保する責任は、Microsoft Azureが担っています。一方、Kubernetesは、ポッドのセキュリティ標準や秘密などのコンポーネントを含む、クラウドのセキュリティを担当します。サプライチェーン全体のセキュリティは、レジストリと構築環境の両方を保護します。

AKSはMicrosoft Azureによって十分にサポートされているため、顧客とユーザーは規制とセキュリティのコンプライアンスを達成するための基盤となるツールと技術を利用できます。AKSは、さまざまなセキュリティコンポーネント(ビルドセキュリティ、レジストリセキュリティ、クラスタセキュリティ、ネットワークセキュリティ、Kubernetesシークレットなど)を組み合わせて、最高のセキュリティプラクティスを提供します。AKSセキュリティの目標には次のようなものがあります:

  • 完全な承認と認証の提供
  • AKSに組み込まれたAzure Policyの活用によるアプリケーションのセキュリティ確保
  • AKSクラスタが最新のOSセキュリティアップデートとKubernetesリリースを実行していることの確認
  • セキュアなポッドトラフィックと機密情報へのセキュアなアクセスの提供

安全でないクラウドサービスの、そしてこの場合は AKS に関連するリスクを理解することで、Microsoft Azure は、AKS ユーザーが AKS のセキュリティを確保するために既存のコンポーネントを活用できる、いくつかのベストツールとプラクティスを提供します。この記事では、AKS セキュリティのベストプラクティスと、それを AKS 環境に適用する方法について説明します。

AKSセキュリティのベストプラクティス

クラスタとノードのセキュリティ: APIサーバーとクラスターノードへの安全なアクセス

Microsoftは、AKSマネージドサービスの一部として、クラスタやノードなどのKubernetesマスターコンポーネントを提供、管理、保守しています。AKSクラスタはそれぞれ、APIサーバーやKubernetes Schedulerなどの機能を提供する独自のシングルテナントKubernetesマスターを持っています。

AKSでは、Kubernetes APIサーバーはパブリックIPとドメイン名を持っています。クラスタとノードのセキュリティを確保するには、APIアクセスを特定のIP範囲に制限するか、Azure Virtual Network内にプライベートクラスタを作成して制限する必要があります。

APIサーバーへのアクセスを制御するには、Azureロールベースアクセス制御(RBAC)、Kubernetes RBAC、およびAzure Active Directory(Azure AD)を統合します。これらの制御により、名前空間などのスコープ付きリソースに最小限のアクセス許可が付与されるため、APIサーバーへのアクセスが制限され、実行されたアクションの明確な監査が可能になります。きめ細かなパーミッションを確保するために推奨されるベストプラクティスは、個々のIDを使用する代わりに、グループを使って特定のファイルやフォルダへのアクセスを制限することです。例えば、グループAzure ADメンバーシップを使用して、Kubernetesユーザーと個々のロールをバインドし、ユーザーグループごとにパーミッションが付与されます。

Cluster and Node Security

出典: Microsoft文書

リソースへの安全なコンテナアクセス

ユーザーアクセスを制限するのと同様に、コンテナも必要なリソースとプロセスだけにアクセスできるように制限する必要があります。これには、最小限の権限を付与することでコンテナが実行できるアクションの種類へのアクセスを制限することや、ルートアクセス権限が使用されないようにすることも含まれます。アプリケーションを構成する際には、コンテナが昇格した特権やルートアクセスを必要としないようにすることで、攻撃のリスクを抑えることができます。

AKSには、ポッドの機能を定義するKubernetesポッドセキュリティコンテキストが組み込まれています。たとえば、「allowPrivilegeEscalation: false」を設定することで、ポッドマニフェスト内でポッドセキュリティを構成できます。ポッドのセキュリティとリソースへのアクセスを確保するためのセクション全体がここにあります。

Kubernetesの最新バージョンへの定期的なアップデート

Kubernetesは定期的に新機能や新しいバグやセキュリティの修正をリリースしています。AKSユーザーとしては、クラスタ内のKubernetesのバージョンに最新の機能とバグ修正が含まれていることを確認する必要があります。Kubernetesのリリースがベータステータスで安定したら、ユーザーがリリースバージョンの新機能に簡単にアップグレードできるように、本番環境での使用を推奨します。

AKSはKubernetesの複数のバージョンをサポートしており、新しいパッチバージョンが導入されると、最も古いパッチバージョンは廃止されます。Kubernetesのリリースサイクルは非常に定期的で予測可能なため、ユーザーはデプロイの破損に遭遇することなく定期的にアップグレードできます。

クラスタ内でKubernetesをアップグレードする前に、まずAzure CLI内で以下のコマンド例を実行して、クラスタで利用可能なバージョンを確認する必要があります。

az aks get-upgrades --resource-group myResourceGroup --name myAKSClusterCode language: JavaScript (javascript)

利用可能なKubernetesのバージョンを確認したら、以下のコマンドを実行してAKSクラスタをアップグレードします。

az aks upgrades

Kubernetesをアップグレードする際に最も推奨されるプラクティスは、まず開発テスト環境内で新バージョンをパッチテストすることです。これにより、既存のワークロードとKubernetesバージョンとの互換性が検証されます。また、特に複数のクラスタで作業する場合は、一度に1つのクラスタリソースをアップグレードすることが重要です。こうすることで、各リソースの段階的な影響や変更を簡単に監視できます。

Azure CLI内でこのコマンドを実行して、一度に1つのクラスタをアップグレードします:

az aks upgrade --resource-group myResourceGroup --name myAKSCluster --Kubernetes-version KUBERNETES_VERSION 

ネットワークセキュリティ

AKSが安全で、オンプレミスのネットワークと接続できるようにするには、AKSクラスタを既存のAzure仮想ネットワークのサブネットにデプロイします。仮想ネットワークは、Azure Site-to-Site VPNまたはExpress Routeを使用してオンプレミスのネットワークに接続します。また、KubernetesイングレスコントローラーにプライベートIPアドレスと内部IPアドレスを定義することで、内部ネットワーク接続へのサービスアクセスを制限する必要があります。以下の画像は、さまざまなネットワークセキュリティグループ(NSG)、AKSクラスタ、Webアプリケーションファイアウォール(WAF)がどのように連携し、全体的なAKSネットワークセキュリティポスチャのセキュリティ機能とポリシーを提供するかを示しています。

Network Security

出典: Microsoft文書

Azure AKS Monitoring and Observability

Azure Kubernetes Service(AKS)は、その健全性とパフォーマンスを監視するためにAzure Monitorを使用します。Azure Monitor は、遠隔測定メトリクスのコレクションを使用して、アラートとクリティカルなパフォーマンス問題に関連する傾向を監視、分析、可視化します。AKS は、基本的な健全性とパフォーマンスを監視するために使用されるプラットフォームメトリクスとリソースログを生成します。また、AKS上でホストされている管理対象のKubernetesクラスタ内で使用されるContainer insights機能も含まれており、それらをまとめて監視することができます。コンテナインサイトは、さまざまな監視シナリオのために収集されたデータを分析するインタラクティブなビューとワークブックを提供します。

以下に示すように、コンテナインサイトは、ポッドとクラスタの使用率、健全性、およびパフォーマンスの概要を視覚化します。

Azure AKS Monitoring and Observability

Source:Microsoft Docs 

Sysdig Secure DevOpsプラットフォームによるAzure AKSの保護

デジタル化におけるクラウドコンピューティングの利用の増加に伴い、オブザーバビリティとモニタリングは、クラウドサービスを利用する際に従うべき最も重要なベストプラクティスの2つであることに注意することが重要です。Azure AKSは、Kubernetesコンテナアプリケーションを実行するために非常に重要なツールであるため、AKSクラスタを監視することが重要です。Sysdigは、監査ロギングを支援する2つの製品、Sysdig Secure DevopsプラットフォームとSysdig Monitorを提供しています。

Sysdig Secure DevOps Platformは、オープンソースの基盤上に構築された包括的な可視性とセキュリティを提供し、Azure Kubernetes Service(AKS)上で自信を持ってアプリを実行できるようにします。Kubernetesとクラウドの動的な性質に対応できるSaaSとDevOps接続を使用して、簡単に拡張できます。

Sysdig Monitorもまた、Kubernetesにおけるクラスタの可用性とキャパシティを確保するのに役立つSysdig製品です。コンテナやマイクロサービスに適したアーキテクチャで使用される統合プラットフォームで、セキュリティの提供、監視、アラート、動的な本番環境のトラブルシューティングを行います。