第7章 コンテナープラットフォームのセキュリティー保護
7.1. コンテナーのオーケストレーション
API は、スケーリング時にコンテナー管理を自動化する際に主要な役割を担います。API は以下の目的で使用されます。
- Pod、サービス、およびレプリケーションコントローラーのデータの検証および設定。
- 受信要求におけるプロジェクト検証の実施と、他の主要なシステムコンポーネントでのトリガーの呼び出し。
関連資料
- 『OpenShift Container Platform アーキテクチャー』:「OpenShift Container Platform をセキュリティー保護する方法」
7.2. 認証および承認
7.2.1. OAuth を使用したアクセスの制御
コンテナープラットフォームのセキュリティーを保護にするために、認証および承認で API アクセス制御を使用することができます。OpenShift Container Platform マスターには、ビルトインの OAuth サーバーが含まれます。ユーザーは、OAuth アクセストークンを取得して API に対して認証することができます。
管理者は、LDAP、GitHub、または Google などの アイデンティティープロバイダー を使用して認証できるように OAuth を設定できます。新規の OpenShift Container Platform デプロイメントには、デフォルトで Deny All アイデンティティープロバイダーが使用されます。ただし、これは初回のインストール時またはインストール後に設定することが可能です。アイデンティティープロバイダーの詳細な一覧については、「認証とユーザーエージェントの設定」を参照してください。
たとえば、GitHub アイデンティティープロバイダーをインストール後に設定するには、以下を実行します。
- /etc/origin/master-config.yaml で、マスター設定ファイルを編集します。
以下のように
oauthConfig
スタンザを修正します。oauthConfig: ... identityProviders: - name: github challenge: false login: true mappingMethod: claim provider: apiVersion: v1 kind: GitHubIdentityProvider clientID: ... clientSecret: ... organizations: - myorganization1 - myorganization2 teams: - myorganization1/team-a - myorganization2/team-b
注記詳細情報と使用方法については、「認証とユーザーエージェントの設定」の「GitHub」セクションを参照してください。
変更を保存したら、変更を有効にするためにマスターサービスを再起動します。
# master-restart api # master-restart controllers
関連資料
『OpenShift Container Platform アーキテクチャー』
- 『OpenShift Container Platform CLI リファレンス』
- 『OpenShift Container Platform 開発者ガイド』: 「CLI 認証」
7.2.2. API アクセス制御および管理
アプリケーションには、管理を必要とする各種のエンドポイントを持つ複数の独立した API サービスを設定できます。OpenShift Container Platform には 3scale API ゲートウェイのコンテナー化されたバージョンが含まれており、これにより API を管理し、アクセスを制御することができます。
3scale は、API の認証およびセキュリティーについての様々な標準オプションを提供します。これらは、認証情報を発行し、アクセスを制御するために単独で使用することも、他と組み合わせて使用することもできます (例: 標準 API キー、アプリケーション ID とキーペア、OAuth 2.0 など)。
アクセスについては、特定のエンドポイント、メソッド、およびサービスに制限することができ、アクセスポリシーをユーザーグループに適用することができます。アプリケーションの計画に基づいて、API の使用にレート制限を設定したり、開発者グループのトラフィックフローを制御したりすることが可能です。
APIcast v2 (コンテナー化された 3scale API ゲートウェイ) の使用についてのチュートリアルは、「Running APIcast on Red Hat OpenShift」を参照してください。
7.2.3. Red Hat SSO
Red Hat Single Sign-On (RH-SSO) サーバーを使用すると、SAML 2.0、OpenID Connect、および OAuth 2.0 などの標準に基づく Web SSO 機能を提供し、アプリケーションのセキュリティーを保護することができます。このサーバーは、SAML または OpenID Connect ベースのアイデンティティープロバイダー (IdP) として機能します。つまり、標準ベースのトークンを使用して、アイデンティティー情報およびアプリケーションについてエンタープライズユーザーディレクトリーまたはサードパーティーのアイデンティティープロバイダーとの仲介を行います。Red Hat SSO を Microsoft Active Directory および Red Hat Enterprise Linux Identity Management を含む LDAP ベースのディレクトリーサービスと統合することが可能です。
使用方法についてのチュートリアルは、『Red Hat JBoss SSO for OpenShift』のドキュメントを参照してください。
7.2.4. セルフサービス Web コンソールのセキュリティー保護
OpenShift Container Platform はセルフサービスの Web コンソールを提供して、チームが承認なしに他の環境にアクセスできないようにします。OpenShift Container Platform は以下の条件に基づいてセキュアなマルチテナントマスターを提供します。
- マスターへのアクセスは Transport Layer Security (TLS) を使用する。
- API サーバーへのアクセスは X.509 証明書または OAuth アクセストークンを使用する。
- プロジェクトのクォータは不正トークンによるダメージを制限する。
- Etcd はクラスターに直接公開されない。
関連資料
-
『OpenShift Container Platform アーキテクチャー』:「「インフラストラクチャーのコンポーネント
Web コンソール」 - 『OpenShift Container Platform 開発者ガイド』: 「Web コンソール認証」
7.3. プラットフォームの証明書の管理
OpenShift Container Platform には、そのフレームワーク内に、TLS 証明書による暗号化を利用した REST ベースの HTTPS 通信を使用する複数のコンポーネントがあります。OpenShift Container Platform の Ansible ベースのインストーラーは、これらの認証をインストール時に設定します。以下は、このトラフィックを生成するいくつかの主要コンポーネントです。
- マスター (API サーバーとコントローラー)
- etcd
- ノード
- レジストリー
- ルーター
7.3.1. カスタム証明書の設定
API サーバーおよび Web コンソールのパブリックホスト名のカスタム提供証明書は、初回のインストール時または証明書の再デプロイ時に設定できます。カスタム CA を使用することも可能です。
Ansible Playbook を使用したクラスターの初回のインストール時に、カスタム証明書は openshift_master_overwrite_named_certificates
Ansible 変数を使用して設定できます。この Ansible の変数は、以下のようなインベントリーファイルで設定できます。
openshift_master_named_certificates=[{"certfile": "/path/on/host/to/custom1.crt", "keyfile": "/path/on/host/to/custom1.key", "cafile": "/path/on/host/to/custom-ca1.crt"}]
インストール Playbook の実行方法に関するオプションと説明については、「カスタム証明書の設定」 セクションを参照してください。
インストーラーには、すべてのクラスター証明書の有効期限を確認するための Ansible Playbook が含まれます。追加の Playbook は、最新の CA を使用してすべての証明書を一度に自動的に再デプロイしたり、特定の証明書のみを再デプロイしたり、または新たに生成した CA またはカスタム CA を独自に再デプロイしたりできます。これらの Playbook に関する詳細は、「証明書の再デプロイ」を参照してください。
関連資料
『OpenShift Container Platform クラスターの設定』