Upgrade to Pro — share decks privately, control downloads, hide ads and more …

OpenShiftの内部レジストリって何?/What's OpenShift Image Registry

suzukiry
December 14, 2022

OpenShiftの内部レジストリって何?/What's OpenShift Image Registry

suzukiry

December 14, 2022
Tweet

More Decks by suzukiry

Other Decks in Technology

Transcript

  1. OpenShiftとは? AUTOMATED OPERATIONS CLUSTER SERVICES APPLICATION SERVICES DEVELOPER SERVICES Middleware,

    Service Mesh Functions, ISV Monitoring, Chargeback Registry, Logging Automated Builds, CI/CD, IDE Any Infrastructure Virtual Private cloud Bare metal Public cloud Edge • エンタープライズコンテナ基盤(Kubernetes、サポート、ビジネス価値に直結する機能を包含) • アプリケーション開発の効率化に重きを置いている 事例 Subs数え方 OCP関連製品 インストール 運用 ここについて
  2. アジェンダ 1. レジストリの種類 2. OpenShift Image Registryとは? 3. OpenShift Image

    Registryの良いところは? 4. 使い方 5. まとめ https://www.ac-illust.com/
  3. レジストリの種類 OpenShift に関連するレジストリ 1. 統合 OpenShift Container Platform レジストリー 2.

    サードパーティーレジストリー 3. Red Hat Quay レジストリー 4. Red Hat Ecosystem Catalog
  4. OpenShift Image Registryの良いところ 1. クラスター構築時に自動で構成されるのですぐ使える ◦ Openshiftのインストールと同時に OpenShift Image Registry

    もインストール ◦ 操作はOperator経由で簡単 2. イメージにおけるセキュリティ対策機能が備わっている ◦ 例えば 『NISTSP 800-190』 に登場するコンテナイメージ・ コンテナレジストリのセキュリティリスクの対応にも 使える
  5. インストールされる OpenShift Image Registry 1. クラスター構築時に自動で構成されるのですぐ使える $ oc get all

    -n openshift-image-registry Pod Service Daemon set Deploy ment Job Cronjob Replica set Route
  6. インストールされる OpenShift Image Registry openshift-image-registry 1. クラスター構築時に自動で構成されるのですぐ使える cluster-image-registry- operator image-pruner

    image-registry node-ca configs.imageregistry. operator.openshift.io リソース S3 • operator は、configリソースを oc editすることで設定を反映 • image-registry は、ベアメタ ル、vSphereの場合は追加設定 が必要 • image-pruner は、デフォルト でセットされているイメージ削 除用cronjob • node-ca は、各ノードに配置 クラスター構築時に自動で構成されるので、すぐ使えて便利 ※ベアメタル、vSphere では共有可能なストレージがないので初期設定が必要
  7. コンテナにおけるセキュリティ- ex. NIST SP 800-190 対応 ▪ NIST SP 800-190

    - NISTが策定した、アプリケーション・コンテナ環境のセキュリティガイド - 指針として有用だが、汎用的で具体的な製品・設定の指定は無い 2. イメージにおけるセキュリティ対策機能が備わっている OpenShift Image Registryには、 イメージにおけるセキュリティ対策機能が 備わっている Partnerワークショップ DevSecOps基礎編資料より
  8. a. 信頼できないイメージの利用制限 -1/3 • 課題 誰が作ったわからないコンテナイメージは使えない。 ベースイメージの利用に統制を効かせたい。 Source Code Build

    Registry Deploy Runtime 1. 組織が許可しない ベースイメージの利用 2. 不正なイメージが登 録される 3. 組織が承認していな いイメージが実行される 4. 組織が承認しないイメー ジがすでに稼働している 機能や運用による対処
  9. a. 信頼できないイメージの利用制限 -2/3 • Red Hat Ecosystem Catalog でのイメージ署名・検証の大まかな動作 (ユーザ)イメージ検証設定追加

    (RH)イメージの提供 (RH)イメージの署名 (ユーザ)公開鍵の取得 - 公開鍵はデフォルトでOpenShiftのノードに格納 (ユーザ)イメージ取得時の検証 OpenShift Image Registryでは、ユーザの 独自イメージでも署名が可能 → この署名・検証のサイクルを利用可能 参考文献「OpenShiftの内部レジストリのイメージ署名検証機能を使ってみる」
  10. a. 信頼できないイメージの利用制限 -1/3 • 課題 誰が作ったわからないコンテナイメージは使えない。ベースイメージの利用 に統制を効かせたい。 Source Code Build

    Registry Deploy Runtime 1. 組織が許可しない ベースイメージの利用 2. 不正なイメージが登 録される 3. 組織が承認していな いイメージが実行される 4. 組織が承認しないイメー ジがすでに稼働している 機能や運用による対処 2023年1月18日 DevSecOps編ワーク ショップにて、RHACSを紹介しています 再掲
  11. d. 認証・認可制限 対応方法:TLS設定(どちらかというとRouteの設定) 2. イメージにおけるセキュリティ対策機能が備わっている $ oc patch configs.imageregistry.operator.openshift.io/cluster --patch

    '{"spec":{"defaultRoute":true}}' --type=merge Default route で公開 第5章 レジストリーの公開 より $ oc get secret -n openshift-ingress router-certs-default -o go-template='{{index .data "tls.crt"}}' | base64 -d | sudo tee /etc/pki/ca-trust/source/anchors/${HOST}.crt Ingress Operator の証明書を取得 $ sudo update-ca-trust enable クラスターのデフォルト証明書がルートを信頼 $ sudo podman login -u kubeadmin -p $(oc whoami -t) $HOST デフォルトのルートを使用して podman にログイン
  12. c. レジストリ内の古いイメージ整理 - 1/2 ▪ 課題: レジストリ内に古いバージョンのイメージを放置されることで、脆弱性を 含むバージョンのイメージが残って、利用されてしまうかもしれない 2. イメージにおけるセキュリティ対策機能が備わっている

    0.9 1.0 1.1 1.2 1.3 TAG 2021.9 2021.11 (Log4j未対応) 2022.3 (Log4j対応済) 2022.7 (Log4j対応済) 2022.11 (Log4j対応済) 時期 1.1 1.2 1.3 2022.3 (Log4j対応済) 2022.7 (Log4j対応済) 2022.11 (Log4j対応済) TAG 時期 Log4j混入 想定外のイメー ジを使わない 定期的なハウスキーピング 古いイメージを放置
  13. c. レジストリ内の古いイメージ整理 - 2/2 対応方法: OpenShift の Pruning 機能が使える 1.

    Image Registry Operator の imagepruners.imageregistry.operator.openshift.io リソースを用いて 自動的に削除 2. oc adm prune images コマンドで手動削除 2. イメージにおけるセキュリティ対策機能が備わっている imagepruners.imageregistry. operator.openshift.io リソース タグごとに保持する イメージのバージョ ンの数を指定 ジョブ実行時間を指 定 ImagePruner を更新すると CronJob として Pruning の ジョブが実行される 1. Imageprunersリソースを用いて 自動的に削除について
  14. d. 認証・認可制限 ▪ 課題 レジストリには機密性の高いアプリケーションのコンテナイメージが 格納されるため、利用には制限が必要 2. イメージにおけるセキュリティ対策機能が備わっている OpenShift Image

    Registry イメージを pull/push イメージを pull のみ OpenShift Image Registry イメージを pull/push 関連リソースを見極めて ロールの作成、権限設定 など煩雑 イメージを pull のみ OpenShift ビルトインの ロールを使って、 簡単に認証・認可 管理 別プロジェクトのService Account も同じく 別プロジェクトのService Account も同じく 管理 管理 管理
  15. d. 認証・認可制限 対応方法: OpenShift の RBAC で権限設定 2. イメージにおけるセキュリティ対策機能が備わっている $

    oc policy add-role-to-user registry-viewer <user_name> イメージを pull したい場合 $ oc policy add-role-to-user registry-editor <user_name> イメージを push したい場合 第4章 レジストリーへのアクセス より
  16. 使い方(個人的な見解) • OpenShiftを内製で使うような場合は、内部レジストリとしてOpenShift Image Registryだけを使うことも。 • コンテナ納品を行うような外部との連携がある場合は、Red Hat Quayや AWS

    ECR などの外部コンテナレジストリが配置 ◦ OpenShift Image Registry はその背後に配置 ◦ セキュリティスキャン後のイメージを、OCRにプッシュ。
  17. 実際にどういう風に使われているか 1. 開発環境での更新作業 a. アプリや学習モデルを更新 b. テスト成功したコンテナイメージ をAWS ECRへpush c.

    脆弱性スキャン 2. OCP レジストリへのImage Copy a. OCP上のJenkinsが定期的に AWS ECRをポーリングして、 OCP上のコンテナレジストリへ イメージをコピーする 3. ステージング環境へのデプロイ a. Pull Request b. 承認→Pipeline実行・デプロイ 4. 本番環境へのデプロイ a. Pull Request b. 承認→Pipeline実行・デプロイ Red Hat Forum APAC 2020 ハイライトセミナー 登壇資料より抜粋 Red Hat Forum APAC 2020 ハイライトセミナー 東日本電信電話株式会社 様事例をご参照ください。
  18. まとめ • OpenShiftにデフォルトでビルトインされているレジストリ • Red Hat Quay や AWS ECRといった、多機能コンテナイメー

    ジ・レジストリとは異なるので機能要件は要確認 • レジストリとしての基本機能やイメージにおける セキュリティ対策機能が備わっている ◦ NIST SP 800-190 のイメージ・レジストリのリスクの (一部を)カバー https://www.ac-illust.com/
  19. • Product Documentation ◦ https://access.redhat.com/documentation/ja-jp/openshift_contai ner_platform/4.11/html/registry/index • OpenShift Image Registry

    のリソース使用量を調べる ◦ https://qiita.com/Yuhkih/items/a05f6fb0cc074a62ca29 • OpenShiftの内部レジストリのイメージ署名検証機能を使ってみる ◦ https://qiita.com/shin7446/items/99d01e54600899d88090 • OpenShiftのRBACを完全に理解する ◦ https://nekop.hatenablog.com/entry/2017/12/12/182149 • OpenShift 徹底入門(本) 参考