今回のブログは、Professional Cloud Network Engineer認定取得講座13回目です!今回は、「模擬試験から重要項目をピックアップして説明します! 〜その捌〜」です!
今回も、「Professional Cloud Network Engineer」認定資格の模擬試験から、私がピックアップした重要項目について説明します。模擬試験については、下記URLから受験することができます。
Professional Cloud Network Engineer 模擬試験
是非、最後までご覧いただけると嬉しいです。
Google Kubernetes Engineのアクセス制御
概要
Google Cloud プロジェクトを作成すると、そのプロジェクトは作成者だけがアクセスできます。他のユーザーはデフォルトではアクセス権を持たず、Google Kubernetes Engine(GKE)などのリソースにアクセスできません。
GKEでは、アクセス権限を管理するために、Identity and Access Management(IAM)とKubernetes ロールベースのアクセス制御(RBAC)という2つのメカニズムが利用できます。
IAMは、Google Cloud プロジェクト全体のアクセス権限を管理します。IAM ロールを使用して、プロジェクト内のすべてのユーザーやサービスアカウントに、特定のリソースに対するアクセス権を付与できます。
RBACは、Kubernetes クラスタ内のオブジェクトに対するアクセス権限を管理します。RBAC ロールを使用して、クラスタ内の特定のオブジェクトに対するアクセス権を、特定のユーザーやサービスアカウントに付与できます。
<どちらを使用するべきか?>
・GKE を使用する場合は、Kubernetes RBAC を使用するのが一般的です。Kubernetes RBACは、Kubernetes クラスタ内のオブジェクトに対する詳細な権限を提供します。
・GKE 以外の Google Cloud リソースを使用する場合は、IAM を使用するのが一般的です。IAM は、Google Cloud プロジェクト全体のアクセス権限を管理できます。
<まとめ>
・Google Cloud プロジェクトを作成すると、最初は作成者だけがアクセスできます。
・GKE では、IAM と RBAC という 2 つのメカニズムを使用してアクセス権限を管理できます。
・GKE を使用する場合は、Kubernetes RBAC を使用するのが一般的です。
・GKE 以外の Google Cloud リソースを使用する場合は、IAM を使用するのが一般的です。
以下に、それぞれのメカニズムの具体的な違いをまとめます。
機能 | Kubernetes RBAC | IAM |
適用範囲 | Kubernetes クラスタ内のオブジェクト | Google Cloud リソース全般 |
権限の細かさ | 詳細 | 大まか |
適した用途 | Kubernetes 特有のアクセス許可が必要な場合 | Google Cloud コンポーネントを複数使用し、Kubernetes に特有のアクセス許可を管理する必要がない場合 |
Kubernetes RBAC
KubernetesのRBACは、Kubernetesクラスタ内のユーザーやサービスアカウントにアクセス権を付与するための仕組みです。
RBACでは、ユーザーやサービスアカウントに役割を割り当てることで、その役割に応じたアクセス権を付与します。
役割は、Kubernetesオブジェクトやオブジェクトタイプに対してアクセス権を設定し、そのオブジェクトに関連するアクション(動詞)を定義できます。
例えば、開発者の役割には、Podの作成、Podのリスト、ログの表示などの権限を付与することができます。
RBACを使用することで、特定のユーザーやサービスアカウントに対して、特定のアクションを許可または制限する柔軟なアクセス制御が可能となります。
例えば、以下のようなケースでRBACが役立ちます。
・開発者にPodを作成できる権限を付与する
・運用者にPodを削除できる権限を付与する
・管理者にすべてのリソースを管理できる権限を付与する
RBACは、Kubernetesクラスタを安全に運用するために重要な機能です。
IAM
Google Cloud IAMは、Google Cloudのリソースへのアクセス権を制御するための仕組みです。IAMでは、ロールとプリンシパルの組み合わせでアクセス権を制御します。
ロールは、リソースに対して実行できる操作の権限を定義します。プリンシパルは、リソースにアクセスできるユーザー、サービスアカウント、グループなどのことです。
IAMでは、ロールを3つのカテゴリに分類しています。
- 基本ロール:オーナー、編集者、閲覧者など、大まかな権限を提供します。
- 事前定義ロール:基本ロールよりも詳細なアクセス権を提供し、多くのユースケースに対応します。
- カスタムロール:独自の権限セットを組み合わせて作成できます。
IAMポリシーは、一連の権限をGoogle Cloudプリンシパルに割り当てます。
サービスアカウントは、Google Cloudプロジェクトに関連付けられ、タスクを実行するためのGoogle Cloudアカウントです。ロールと権限がサービスアカウントに割り当てられます。
IAMの事前定義ロールには、多くの種類があります。例えば、Kubernetes Engineクラスタの閲覧、管理、ノードへのアクセスなどを行うためのロールがあります。
GKEの限定公開クラスタ(プライペートクラスタ)
概要
Google Kubernetes Engine(GKE)の限定公開クラスタは、インターネットから隔離されたクラスタです。つまり、外部からクラスタ内のノードやPodにアクセスすることはできません。
限定公開クラスタは、次の2つの方法で作成できます。
- Standardクラスタ:Googleが管理する仮想マシン(VM)インスタンスを使用してクラスタを作成します。
- Autopilotクラスタ:Googleが管理するVMインスタンスを使用してクラスタを作成し、自動スケーリングや自動アップデートなどの機能を利用できます。
限定公開クラスタでは、ノード、Pod、およびServiceに固有の内部IPアドレス範囲が必要です。また、特定のプライベートノードにインターネットへの送信アクセスを提供する場合には、Cloud NATを使用します。
限定公開クラスタのアーキテクチャ
限定公開クラスタは、インターネットから隔離されたクラスタです。ノードには内部 IP アドレスのみがあり、インターネット上のクライアントはノードに接続できません。
限定公開クラスタのアーキテクチャは、次のコンポーネントで構成されます。
- クラスタ:GKE クラスタは、コンテナを実行する仮想マシン (VM) の集合です。限定公開クラスタでは、ノードに内部 IP アドレスのみがあります。
- ネットワーク:クラスタは、VPC ネットワーク内に作成されます。VPC ネットワークは、クラスタのノードと、クラスタにアクセスするクライアントを隔離するために使用されます。
- ファイアウォール:ファイアウォールは、クラスタと VPC ネットワークの外部とのトラフィックを制御します。限定公開クラスタでは、ファイアウォールはインターネットからのトラフィックをブロックします。
- ロードバランサ:ロードバランサは、クライアントからのトラフィックをクラスタ内のノードに分散します。限定公開クラスタでは、ロードバランサは VPC ネットワーク内でのみ使用されます。
限定公開クラスタを使用すると、次のメリットがあります。
- セキュリティの向上:限定公開クラスタでは、ノードと Pod がインターネットから隔離されるため、セキュリティが向上します。
- コンプライアンスの向上:限定公開クラスタは、特定のコンプライアンス要件を満たすために使用できます。
- コストの削減:限定公開クラスタは、インターネットへのアクセスが必要なノードのみをインターネットに接続するため、コストを削減できます。
限定公開クラスタは、次のシナリオに適しています。
- インターネットに接続する必要のないアプリケーションを実行する場合
- 特定のコンプライアンス要件を満たす必要がある場合
- コストを削減したい場合
要約すると、限定公開クラスタは、セキュリティを向上させ、コンプライアンスの要件を満たすために使用できる、コスト効率的な方法です。
限定公開クラスタ(プライペートクラスタ)の種類
限定公開クラスタは、インターネットから直接アクセスできないクラスタです。クラスタ内のノードには外部IPアドレスがないため、インターネットからクラスタにアクセスするには、コントロールプレーンと呼ばれるクラスタの管理部分へのアクセスが必要です。
コントロールプレーンには、プライベートエンドポイントとパブリックエンドポイントの2つのエンドポイントがあります。
- プライベートエンドポイントは、クラスタ内のノードからのみアクセスできます。
- パブリックエンドポイントは、インターネットからアクセスできます。
パブリックエンドポイントへのアクセスを制御するために、いくつかの構成オプションが提供されています。
- パブリックエンドポイントアクセスを無効にすると、インターネットからのアクセスがブロックされます。
- パブリックエンドポイントアクセスを有効にし、承認済みネットワークを有効にすると、インターネットからアクセスできるのは、承認済みネットワーク内のIPアドレスのみになります。
- パブリックエンドポイントアクセスを有効にし、承認済みネットワークを無効にすると、インターネットからのアクセスは制限なく許可されます。
kubectl※を使用してエンドポイントにアクセスする場合、ノードからのアクセスは常にプライベートエンドポイントを使用し、他のVMからのアクセスは承認済みネットワークのリストに依存します。
※kubectl は、クラスター内のリソースを管理するためのKubernetesにおけるCLI ツールです。リソースの作成、更新、削除、および状態の確認を行うことができます。
つまり、限定公開クラスタは、セキュリティを強化するために設計されたクラスタです。パブリックエンドポイントへのアクセスを制御することで、インターネットからの不正アクセスを防ぐことができます。
以下に、各ポイントをより具体的に説明します。
①パブリックエンドポイントアクセスが無効な場合
・インターネットからのアクセスがブロックされます。
・コントロールプレーンへのアクセスは内部IPアドレスからのみ許可されます。
この設定は、クラスタをインターネットから完全に隔離したい場合に使用します。
②パブリックエンドポイントアクセスが有効で、承認済みネットワークが有効な場合
・外部IPアドレスと内部IPアドレスの両方からコントロールプレーンへの制限付きアクセスが許可されます。
・制限付きアクセスとは、コントロールプレーンへのアクセスは承認済みネットワーク内のIPアドレスのみに許可されます。
この設定は、クラスタをインターネットから保護しながら、特定のIPアドレスからのアクセスを許可したい場合に使用します。
③パブリックエンドポイントアクセスが有効で、承認済みネットワークが無効な場合
・外部IPアドレスからでもコントロールプレーンへアクセスできます。
この設定は、クラスタをインターネットに公開したい場合に使用します。
④kubectlを使用してエンドポイントにアクセスする場合
・ノードからのアクセスは常にプライベートエンドポイントを使用し、他のVMからのアクセスは承認済みネットワークのリストに依存します。
ノードからのアクセスは、クラスタ内のノードからコントロールプレーンにアクセスするため、プライベートエンドポイントを使用します。他のVMからのアクセスは、インターネットからコントロールプレーンにアクセスするため、承認済みネットワークのリストに依存します。
以上のように、Kubernetesのクラスターエンドポイントアクセスの設定は、クラスタのセキュリティと可用性を確保するために重要な要素です。各設定の利点と欠点を理解した上で、適切な設定を選択するようにしましょう。
まとめ
本日は下記2点について説明しました。
- Google Kubernetes Engineのアクセス制御
- 限定公開クラスタ(プライペートクラスタ)
これからも、Macのシステムエンジニアとして、日々、習得した知識や経験を発信していきますので、是非、ブックマーク登録してくれると嬉しいです!
それでは、次回のブログで!