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の内部レジストリって何?

    View full-size slide

  2. 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関連製品
    インストール
    運用
    ここについて

    View full-size slide

  3. アジェンダ
    1. レジストリの種類
    2. OpenShift Image Registryとは?
    3. OpenShift Image Registryの良いところは?
    4. 使い方
    5. まとめ
    https://www.ac-illust.com/

    View full-size slide

  4. 免責事項
    この資料は2022年11月現在の情報を元に作成しています。
    出来る限り正確な情報となるように努めておりますが、個々のユースケースに対
    する設計や運用方法に対する『正解』を与えるものではありません。実際の案件
    では、どのユースケースに該当するかが判断が難しい場合もございます。具体的
    な案件にて不明な点がございましたら、各 Red Hat 担当営業までご確認いただき
    ますようお願いいたします。
    またドキュメントとこの資料に不整合がある場合は常にドキュメントが優先され
    ます。

    View full-size slide

  5. 1. レジストリの種類
    2. OpenShift Image
    Registryとは?
    3. 良いところ
    4. 使い方
    5. まとめ

    View full-size slide

  6. 1. レジストリの種類
    2. OpenShift Image
    Registryとは?
    3. 良いところ
    4. 使い方
    5. まとめ

    View full-size slide

  7. レジストリの種類
    OpenShift に関連するレジストリ
    1. 統合 OpenShift Container Platform レジストリー
    2. サードパーティーレジストリー
    3. Red Hat Quay レジストリー
    4. Red Hat Ecosystem Catalog

    View full-size slide

  8. 1. レジストリの種類
    2. OpenShift Image
    Registryとは?
    3. 良いところ
    4. 使い方
    5. まとめ

    View full-size slide

  9. OpenShift Image Registry? OCR?

    View full-size slide

  10. 1. レジストリの種類
    2. OpenShift Image
    Registryとは?
    3. 良いところ
    4. 使い方
    5. まとめ

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  13. インストールされる 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 では共有可能なストレージがないので初期設定が必要

    View full-size slide

  14. コンテナにおけるセキュリティ- ex. NIST SP 800-190 対応
    ■ NIST SP 800-190
    - NISTが策定した、アプリケーション・コンテナ環境のセキュリティガイド
    - 指針として有用だが、汎用的で具体的な製品・設定の指定は無い
    2. イメージにおけるセキュリティ対策機能が備わっている
    OpenShift Image Registryには、
    イメージにおけるセキュリティ対策機能が
    備わっている
    Partnerワークショップ DevSecOps基礎編資料より

    View full-size slide

  15. OCRのイメージにおけるセキュリティ対策機能
    a. 信頼できないイメージの利用制限
    b. レジストリへのセキュアな接続
    c. レジストリ内の古いイメージ整理
    d. 認証・認可制限

    View full-size slide

  16. a. 信頼できないイメージの利用制限 -1/3
    ● 課題
    誰が作ったわからないコンテナイメージは使えない。
    ベースイメージの利用に統制を効かせたい。
    Source Code Build Registry Deploy Runtime
    1. 組織が許可しない
    ベースイメージの利用
    2. 不正なイメージが登
    録される
    3. 組織が承認していな
    いイメージが実行される
    4. 組織が承認しないイメー
    ジがすでに稼働している
    機能や運用による対処

    View full-size slide

  17. a. 信頼できないイメージの利用制限 -2/3
    対応方法のひとつ: イメージ署名の検証で署名されないイメージ実行を拒否する
    ● OpenShiftでは、GPG を利用したイメージ署名を利用
    ○ イメージ署名の設定は/etc/containers/policy.json(default:disable)
    ○ 設定は、Machine Config Operatorを介して各ノードに設定
    参考文献「OpenShiftの内部レジストリのイメージ署名検証機能を使ってみる」

    View full-size slide

  18. a. 信頼できないイメージの利用制限 -2/3
    ● Red Hat Ecosystem Catalog でのイメージ署名・検証の大まかな動作
    (ユーザ)イメージ検証設定追加
    (RH)イメージの提供
    (RH)イメージの署名
    (ユーザ)公開鍵の取得 - 公開鍵はデフォルトでOpenShiftのノードに格納
    (ユーザ)イメージ取得時の検証
    OpenShift Image Registryでは、ユーザの
    独自イメージでも署名が可能
    → この署名・検証のサイクルを利用可能
    参考文献「OpenShiftの内部レジストリのイメージ署名検証機能を使ってみる」

    View full-size slide

  19. a. 信頼できないイメージの利用制限 -1/3
    ● 課題
    誰が作ったわからないコンテナイメージは使えない。ベースイメージの利用
    に統制を効かせたい。
    Source Code Build Registry Deploy Runtime
    1. 組織が許可しない
    ベースイメージの利用
    2. 不正なイメージが登
    録される
    3. 組織が承認していな
    いイメージが実行される
    4. 組織が承認しないイメー
    ジがすでに稼働している
    機能や運用による対処
    2023年1月18日 DevSecOps編ワーク
    ショップにて、RHACSを紹介しています
    再掲

    View full-size slide

  20. b. レジストリへのセキュアな接続
    ■ 課題:
    レジストリへの通信ではTLSを使いたい
    OpenShift Image
    Registry
    OpenShift Image
    Registry
    平文のデータ送信を
    避けたい
    TLS設定可能
    TLS
    管理
    管理 管理

    View full-size slide

  21. 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 にログイン

    View full-size slide

  22. 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混入
    想定外のイメー
    ジを使わない
    定期的なハウスキーピング
    古いイメージを放置

    View full-size slide

  23. 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リソースを用いて
    自動的に削除について

    View full-size slide

  24. d. 認証・認可制限
    ■ 課題
    レジストリには機密性の高いアプリケーションのコンテナイメージが
    格納されるため、利用には制限が必要
    2. イメージにおけるセキュリティ対策機能が備わっている
    OpenShift Image
    Registry
    イメージを pull/push
    イメージを pull のみ
    OpenShift Image
    Registry
    イメージを pull/push
    関連リソースを見極めて
    ロールの作成、権限設定
    など煩雑
    イメージを pull のみ
    OpenShift ビルトインの
    ロールを使って、
    簡単に認証・認可
    管理
    別プロジェクトのService
    Account も同じく
    別プロジェクトのService
    Account も同じく
    管理
    管理 管理

    View full-size slide

  25. d. 認証・認可制限
    対応方法: OpenShift の RBAC で権限設定
    2. イメージにおけるセキュリティ対策機能が備わっている
    $ oc policy add-role-to-user registry-viewer
    イメージを pull したい場合
    $ oc policy add-role-to-user registry-editor
    イメージを push したい場合
    第4章 レジストリーへのアクセス より

    View full-size slide

  26. 1. レジストリの種類
    2. OpenShift Image
    Registryとは?
    3. 良いところ
    4. 使い方
    5. まとめ

    View full-size slide

  27. 使い方(個人的な見解)
    ● OpenShiftを内製で使うような場合は、内部レジストリとしてOpenShift
    Image Registryだけを使うことも。
    ● コンテナ納品を行うような外部との連携がある場合は、Red Hat Quayや
    AWS ECR などの外部コンテナレジストリが配置
    ○ OpenShift Image Registry はその背後に配置
    ○ セキュリティスキャン後のイメージを、OCRにプッシュ。

    View full-size slide

  28. 実際にどういう風に使われているか
    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
    ハイライトセミナー
    東日本電信電話株式会社 様事例をご参照ください。

    View full-size slide

  29. 1. レジストリの種類
    2. OpenShift Image
    Registryとは?
    3. 良いところ
    4. 使い方
    5. まとめ

    View full-size slide

  30. まとめ
    ● OpenShiftにデフォルトでビルトインされているレジストリ
    ● Red Hat Quay や AWS ECRといった、多機能コンテナイメー
    ジ・レジストリとは異なるので機能要件は要確認
    ● レジストリとしての基本機能やイメージにおける
    セキュリティ対策機能が備わっている
    ○ NIST SP 800-190 のイメージ・レジストリのリスクの
    (一部を)カバー
    https://www.ac-illust.com/

    View full-size slide

  31. ● 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 徹底入門(本)
    参考

    View full-size slide