[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ユーザーやグループに対して割り当てることができる。
コメント
コメントを投稿