17.5. セキュリティー
17.5.1. セキュリティーの基礎 リンクのコピーリンクがクリップボードにコピーされました!
セキュリティーは、特にクラウドネイティブネットワーク機能 (CNF) を実行する場合、OpenShift Container Platform 上の通信事業者デプロイメントの重要な要素となります。
セキュリティー上の重要な考慮事項を遵守することで、通信事業者 (telco) 環境における高帯域幅ネットワークデプロイメントのセキュリティーを強化できます。このような標準やベストプラクティスを実装すると、通信事業者固有のユースケースにおけるセキュリティーを強化できます。
17.5.1.1. RBAC の概要 リンクのコピーリンクがクリップボードにコピーされました!
ロールベースアクセス制御 (RBAC) オブジェクトは、ユーザーがプロジェクト内で所定のアクションを実行することが許可されるかどうかを決定します。
これにより、プラットフォーム管理者はクラスターロールおよびバインディングを使用して、OpenShift Container Platform プラットフォーム自体およびすべてのプロジェクトへの各種のアクセスレベルを持つユーザーを制御できます。
開発者はローカルロールとバインディングを使用して、プロジェクトにアクセスできるユーザーを制御できます。認可は認証とは異なる手順であることに注意してください。認証はアクションを実行するユーザーのアイデンティティーの判別により密接に関連しています。
認可は、次の認可オブジェクトを使用して管理されます。
- ルール
- 特定のオブジェクトに対して許可されるアクションのセットです。たとえば、ルールによって、ユーザーまたはサービスアカウントが Pod を作成できるかどうかを決定できます。各ルールで、API リソース、その API 内のリソース、および許可されるアクションを指定します。
- ロール
ユーザーまたはグループが実行できるアクションを定義するルールの集まりです。ルールを複数のユーザーまたはグループに関連付けたり、バインドしたりできます。ロールファイルに、そのロールに許可されるアクションおよびリソースを指定するルールを 1 つ以上含めることができます。
ロールは次のタイプに分類されます。
- クラスターロール: クラスターレベルでクラスターロールを定義できます。クラスターロールは 1 つの namespace に結び付けられません。ユーザー、グループ、またはサービスアカウントにクラスターロールをバインドすると、すべての namespace または特定の namespace に適用できます。
- プロジェクトロール: 特定の namespace 内にプロジェクトロールを作成できます。プロジェクトロールはその namespace にのみ適用されます。特定のユーザーに権限を割り当てて、ロールとロールバインディングをそのロールの namespace 内に作成することで、他の namespace に影響を与えないようにすることができます。
- バインディング
ロールを使用したユーザーやグループ間の関連付けです。ロールバインディングを作成すると、ロール内のルールを特定のユーザー ID またはグループと結び付けることができます。これにより、ロールとユーザーまたはグループが組み合わせられ、ユーザーまたはグループが実行できるアクションが定義されます。
注記ユーザーまたはグループには複数のロールをバインドできます。
RBAC の詳細は、「RBAC を使用した権限の定義および適用」を参照してください。
RBAC の運用上の考慮事項
運用上のオーバーヘッドを削減するには、複数のクラスターにわたって個々のユーザー ID を処理するのではなく、グループを通じてアクセスを管理することが重要です。組織レベルでグループを管理することで、アクセス制御を合理化し、組織全体の管理を簡素化できます。
17.5.1.2. セキュリティーアカウントの概要 リンクのコピーリンクがクリップボードにコピーされました!
サービスアカウントは、コンポーネントが API に直接アクセスできるようにする OpenShift Container Platform アカウントです。サービスアカウントは各プロジェクトに存在する API オブジェクトです。サービスアカウントは、一般ユーザーの認証情報を共有せずに API アクセスをより柔軟に制御する方法を提供します。
サービスアカウントを使用すると、Pod にロールベースのアクセス制御 (RBAC) を適用できます。Pod やデプロイメントなどのワークロードにサービスアカウントを割り当てることで、さまざまなレジストリーからのプルなど、追加の権限を付与できます。これにより、より低い権限をサービスアカウントに割り当てて、そのアカウント配下で実行される Pod のセキュリティー関連のフットプリントを削減することもできます。
サービスアカウントの詳細は、「サービスアカウントの概要および作成」を参照してください。
17.5.1.3. アイデンティティープロバイダーの設定 リンクのコピーリンクがクリップボードにコピーされました!
アイデンティティープロバイダーの設定は、クラスターでユーザーを設定する際の最初のステップです。アイデンティティープロバイダーを使用すると、組織レベルでグループを管理できます。
アイデンティティープロバイダーは、クラスターレベルではなく組織レベルで管理される特定のユーザーグループを取得できます。これにより、組織の確立されたプラクティスに準拠したグループにユーザーを追加したり、グループからユーザーを削除したりできます。
変更をクラスターに取り込むには、頻繁に実行される cron ジョブを設定する必要があります。
アイデンティティープロバイダーを使用すると、組織内の特定グループのアクセスレベルを管理できます。たとえば、アクセスレベルを管理するために、次の操作を実行できます。
-
クラスターレベルの権限を必要とするチームに
cluster-adminロールを割り当てる。 - アプリケーション管理者に、それぞれのプロジェクトのみを管理するための特定の権限を付与する。
-
運用チームに、クラスター全体の
viewアクセス権を提供し、変更を許可することなく、監視できるようにする。
アイデンティティープロバイダーの設定の詳細は、「アイデンティティープロバイダー設定について」を参照してください。
17.5.1.4. kubeadmin ユーザーを cluster-admin ユーザーに置き換える リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、すべてのクラスターに cluster-admin 権限を持つ kubeadmin ユーザーが作成されます。クラスターのセキュリティーを強化するには、`kubeadmin` ユーザーを cluster-admin ユーザーに置き換えてから、kubeadmin ユーザーを無効にするか削除します。
前提条件
-
cluster-admin権限を持つユーザーを作成した。 -
OpenShift CLI (
oc) がインストールされている。 - セキュアに保存するための仮想 vault への管理アクセス権がある。
手順
-
htpasswdアイデンティティープロバイダーを使用して、緊急用のcluster-adminユーザーを作成します。詳細は、「htpasswd 認証について」を参照してください。 次のコマンドを実行して、新しいユーザーに
cluster-admin権限を割り当てます。$ oc adm policy add-cluster-role-to-user cluster-admin <emergency_user>緊急用ユーザーのアクセス権を検証します。
- 新しい緊急用ユーザーを使用してクラスターにログインします。
次のコマンドを実行して、ユーザーに
cluster-admin権限があることを確認します。$ oc whoami出力に緊急用ユーザーの ID が表示されることを確認します。
緊急用ユーザーのパスワードまたは認証キーを仮想 vault にセキュアに保存します。
注記機密性の高い認証情報の保護に関する組織のベストプラクティスに従ってください。
次のコマンドを実行して、
kubeadminユーザーを無効にするか削除し、セキュリティーリスクを軽減します。$ oc delete secrets kubeadmin -n kube-system
17.5.1.5. 通信事業者 CNF のセキュリティーに関する考慮事項 リンクのコピーリンクがクリップボードにコピーされました!
通信事業者のワークロードは膨大な量の機密データを処理するため、高い信頼性が求められます。1 つのセキュリティー脆弱性が、クラスター全体に及ぶ広範な侵害につながる可能性があります。シングルノード OpenShift クラスター上で多数のコンポーネントが実行されている場合、侵害が拡大するのを防ぐために各コンポーネントを保護する必要があります。通信事業者のネットワークの信頼性を維持し、脆弱性を回避するには、すべてのコンポーネントを含むインフラストラクチャー全体のセキュリティーを確保することが不可欠です。
通信事業者にとっては、以下の主要なセキュリティー機能が欠かせません。
- Security Context Constraints (SCC): OpenShift クラスター内の Pod セキュリティーをきめ細かく制御します。
- Pod Security Admission (PSA): Kubernetes ネイティブの Pod セキュリティーコントロール。
- 暗号化: 高スループットのネットワーク環境でデータの機密性を確保します。
17.5.1.6. Kubernetes と OpenShift Container Platform における Pod セキュリティーの発展 リンクのコピーリンクがクリップボードにコピーされました!
Kubernetes では当初、Pod のセキュリティーが制限されていました。OpenShift Container Platform を Kubernetes と統合したときに、Red Hat は Security Context Constraints (SCC) によって Pod のセキュリティーを強化しました。同様の機能として、Kubernetes バージョン 1.3 で PodSecurityPolicy (PSP) が導入されました。しかし、Kubernetes バージョン 1.21 で Pod Security Admission (PSA) が導入されたことにより、Kubernetes バージョン 1.25 で PSP は非推奨になりました。
PSA は、OpenShift Container Platform でも、バージョン 4.11 で利用可能になりました。PSA は、Pod のセキュリティーを強化しますが、通信事業者のユースケースに現在も必要な、SCC によって提供される一部の機能が欠けています。したがって、OpenShift Container Platform は引き続き PSA と SCC の両方をサポートしています。
17.5.1.7. CNF デプロイメントの主な領域 リンクのコピーリンクがクリップボードにコピーされました!
クラウドネイティブネットワーク機能 (CNF) のデプロイメントには、次の主な領域があります。
- コア
- CNF が初めてデプロイされたのは、ワイヤレスネットワークのコア領域でした。CNF をコアにデプロイするということは、通常、中央オフィスまたはデータセンターにサーバーのラックを配置することを意味します。これらのサーバーは、インターネットと無線アクセスネットワーク (RAN) の両方に接続されます。ただし、多くの場合、複数のセキュリティーファイアウォールの背後に配置され、インターネットから完全に遮断されていることもあります。このタイプのセットアップは、オフラインクラスターまたは非接続クラスターと呼ばれます。
- RAN
- CNF がコアネットワークで問題なくテストされ、効果的であることが確認されたところで、CNF を無線アクセスネットワーク (RAN) にデプロイすることが検討されました。RAN に CNF を導入するには、多数のサーバー (大規模なデプロイメントでは最大 100,000 台) が必要です。これらのサーバーは、携帯電話基地局の近くに設置されます。通常はシングルノード OpenShift クラスターとして実行され、高いスケーラビリティーを必要とします。
17.5.1.8. 通信事業者固有のインフラストラクチャー リンクのコピーリンクがクリップボードにコピーされました!
- ハードウェア要件
- 通信事業者のネットワークでは、クラスターは主にベアメタルハードウェア上に構築されます。その場合、仮想マシンを使用せずに、オペレーティングシステム (op-system-first) を物理マシンに直接インストールします。これにより、ネットワーク接続の複雑さが軽減され、レイテンシーが最小限に抑えられ、アプリケーションの CPU 使用率が最適化されます。
- ネットワーク要件
- 通信事業者のネットワークでは、標準的な IT ネットワークよりもはるかに大きな帯域幅が必要です。通信事業者のネットワークでは、大量のデータスループットを処理するために、通常、デュアルポート 25 GB 接続または 100 GB ネットワークインターフェイスカード (NIC) が使用されます。セキュリティーは極めて重要であり、機密性の高い個人データを保護するには、暗号化された接続とセキュアなエンドポイントが必要です。
17.5.1.9. ライフサイクル管理 リンクのコピーリンクがクリップボードにコピーされました!
セキュリティーを確保するには、アップグレードが重要です。脆弱性が発見された場合、その脆弱性は最新の z-stream リリースで修正されます。その後、この修正は下位の各 y-stream リリースに遡って導入され、サポート対象のすべてのバージョンにパッチが適用されます。パッチはサポート対象外になったリリースには適用されません。したがって、OpenShift Container Platform クラスターを定期的にアップグレードして、サポート対象のリリースを維持し、脆弱性から保護された状態を維持することが重要です。
ライフサイクル管理とアップグレードの詳細は、「通信事業者コア CNF クラスターのアップグレード」を参照してください。
17.5.1.10. ネットワーク機能から CNF への進化 リンクのコピーリンクがクリップボードにコピーされました!
ネットワーク機能 (NF) は、独立して動作する専用のハードウェアデバイスである物理ネットワーク機能 (PNF) として初まりました。PNF は仮想ネットワーク機能 (VNF) へと徐々に進化しました。VNF は、PNF の機能を仮想化する一方で、CPU、メモリー、ストレージ、ネットワークなどのリソースを制御します。
テクノロジーがさらに進歩するにつれて、VNF はクラウドネイティブネットワーク機能 (CNF) に移行しました。CNF は軽量でセキュアかつスケーラブルなコンテナー内で実行されます。セキュリティーとパフォーマンスを強化するために、非 root での実行や最小限のホスト干渉など、厳格な制限が適用されます。
PNF は、干渉を受けることなく独立して動作するように、無制限の root アクセス権を持っていました。VNF への移行に伴い、リソースの使用が制御されるようになりましたが、プロセスは仮想マシン内で引き続き root として実行できました。一方、CNF は root アクセスを制限し、コンテナーの機能を制限して、他のコンテナーやホストオペレーティングシステムへの干渉を防ぎます。
CNF への移行における主な課題としては、次のものがあります。
- モノリシックなネットワーク機能を、コンテナー化されたより小さなプロセスに分割する。
- 非 root での実行や分離などのクラウドネイティブの原則に準拠しながら、通信業界グレードのパフォーマンスと信頼性を維持する。