[Azure]コンテナセキュリティ

コンテナー

コンテナーとは仮想化の一種で、アプリケーションのコードと関連する構成ファイルおよびライブラリ、そのアプリの実行に必要な依存関係などがまとめられた状態で実行できるため、さまざまな環境にデプロイできる。

また、コンテナーを仮想化し、1つのOS上で複数のコンテナーを起動することができる。これにより従来のサーバー仮想化よりも、手軽に素早くアプリケーションの展開、移動、削除などが可能になる。

Azureコンテナーの主なサービス

ACI (Azure Container Instances)

ACIはAzure上でコンテナーを動作させる環境で、タスクの自動化、ジョブの作成などの様々なシナリオ向けのソリューションを提供する。

ACIを構成する要素
  • イメージ
    コンテナーを構成する元になる要素で、OSとの関係性を維持するための情報やミドルウェア、実行環境などを含む。
  • Dockerfile
    イメージに必要な構成情報を定義するファイル。
  • コンテナー
    イメージから生成される実際のアプリケーションを含む環境。
  • コンテナーグループ
    複数のコンテナーを組み合わせてグループ化したもの。
  • Azure Container Registry
    イメージを登録してACIで利用する際の保存場所になる。認証などのセキュリティ制御を加えることができる。

Azure Container Registry

Azure Conteiner Registryを構成する要素
  • レジストリ
    レジストリを使用してイメージの登録と配布を行う。
  • リポジトリ
    レジストリ内のイメージをグループ化する。レジストリ内のイメージをまとめて、所有権の識別や管理に利用する。
  • アーティファクト
    リポジトリ内の個別のイメージを指す。
SKU (サービスレベル)毎の機能と制限

サービスレベルはBasic、Standard、Premiumの3種類で以下のように機能や制限が異なる。

リソース Basic Standard Premium
記憶域(GiB) 10 100 500
ストレージ制限(TiB) 20 20 20
ReadOps / 1m 1,000 3,000 10,000
WriteOps / 1m 100 500 2,000
ダウンロード帯域幅(Mbps) 30 60 100
アップロード帯域幅(Mbps) 10 20 50
Geoレプリケーション
可用性ゾーン
イメージの署名
アクセス制御

Azure Container Registryはロールベース(RBAC)によるアクセス制御が可能になっている。主なロールと役割は以下の通り。

Role Push Pull Delete Sign
Owner (開発者)
Contributor (共同作成者)
Reader (閲覧者)
AcrPush
AcrPull
AcrDelete
AcrImageSigner
  • AcrImageSignerはイメージに署名をつける際に必要になるロール。安全なイメージを配布するためにはイメージをに署名をつけることで安全性を確保できる。

AKS (Azure Kubernetes Service)

Kubernetesは、コンテナーのデプロイやスケーリングといった作業を管理する仕組みを提供する。

大規模なコンテナーを利用したアプリケーションでは、複数のノード上でコンテナーを動作させる必要があり、さらに状況に応じてスケーリングが必要となる。そういった作業を事前に定義し、維持できるように自動で制御する仕組みを提供する。

AKSの主な機能

クラスターマスター

クラスターマスターは、AKSを構成すると自動で作成される。以下のコンポーネントを持つ。

  • kube apiserver
    APIサーバーは管理ツールに対する操作を提供する。
  • etcd
    クラスターの構成情報を保持するKeyValueストアを持ち、データベースの役割を担う。kube apiserverにより操作される。
  • kube-scheduler
    アプリケーションの作成、およびスケジュールを行い、ワークロードの開始を判定する。
  • kube-controller-manager
    ポッドの状態を管理して調整を行う。

AKSのセキュリティ

Azure ADによるアクセス制御

AKSクラスターを作成すると、自動的にサービスプリンシパルが作成される。AKSでContainer Registryを利用する場合は、このサービスプリンシパルにContainer Registryへのアクセス権を与えてやることでアクセスが可能となる。

RoleBinding

RoleBindingを利用すると、AKSのロールをAzure ADのユーザーやグループに割り当てを行うことができる。ロールで指定した名前空間に対してい、権利の割り当てが可能になる。

ClusterRoleBinding

ClusterRoleBindingを利用すると、クラスター全体の管理権をAzure ADユーザーやグループに対して割り当てることができる。

コメント

このブログの人気の投稿

docker-compose up で proxyconnect tcp: dial tcp: lookup proxy.example.com: no such host

docker-compose で起動したweb、MySQLに接続できない事象

【PHP】PHP_CodeSnifferを使う(コーディングルールのカスタマイズ)