アマゾンのクラウドチャージ: AWS ECR (柔軟なコンテナミラー) を利用してDockerミラーを安全に管理する方法
クラウドの原生とマイクロサービスの枠組みが悪い今日、Dockerミラーはすでにコードを渡す標準コンテナになっている。
多くのチームが容器化を始めたばかりで、手間を省くために、社内の鏡像を直接公共のDocker Hubに投げたり、自分でサーバーに非常に粗末なオープンソースのレジストリをつけたりします。その結果、公共倉庫の権限がうまくいかなかったためにコアビジネスコードが漏洩したのか、あるいは、自分で倉庫を作ったためにメンテナンスが不足していたのか、高同時ストリームに遭遇したときに直接カードが崩れ、ミラーの脆弱性スキャンさえできなかった。
AWS (アマゾンクラウドテクノロジー) の生態では、この汚い仕事をミラーリング管理するために使われています。
Amazon ECR (エラスティック・コンテナ・レジストリー、エラスティック・コンテナ・ミラース・リポジトリ)
。AWSのセキュリティ権限システム (IAM) だけでなく、大手メーカーレベルの脆弱性スキャンとグローバルコピー能力も備えている。
今日、私たちはナンセンスではなく、実戦から直接切り込んで、大手工場の安全規範を使って、AWS ECRに堅固な私有容器の鏡像防御陣地を溶接する方法を教えてあげましょう。
第一段階: ECRの企業レベルの核心概念を理解する
プッシュ (Push) を動かす前に、ECRのネットワークの基礎を明らかにしなければならない。頭のないハエのようにでたらめをしないでください。ECRの構造はとてもはっきりしています。主に以下の三つの核心レベルから構成されています。
レジストリ: これはあなたの本営地です。AWSアカウントごとに地域ごとに存在し、デフォルトのプライベートレジストリが1つしかありません。そのアクセスドメイン名は通常、123456789012.dkr.ecr.us-east-1.amazonaws.comのような形をしています (前の数字はAWSアカウントIDです)。
リポジトリ: これが具体的な「ミラー倉庫」です。例えば、あなたのアプリケーションはuser-serviceと呼ばれています。レジストリの下にuser-serviceというリポジトリを作成します。そこには、v1.0からv2.5までのすべてのバージョンのミラーが保存されています。
IAMポリシーとライフサイクル管理: これはセキュリティゲートと清掃員です。誰がストリームを引っ張ることができるか、誰がストリームを押すことができるか、どのくらい自動的に期限切れの歴史的な死の鏡像を整理するかを決める。
第二段階: 実戦演習一 -- 安全なプライベートリポジトリの作成
あなたのアカウントにログイン
AWSコンソール
、検索して入ります
ECR
サービス。左側のメニューの「リポジトリ」をクリックします。
「レポジトリを作成」
。
重要なパラメータ溶接デッド構成 (ミラーセキュリティレベルを決定):
可視性設定 (visibilitysettings): 「プライベート」を選択することを躊躇しない
) 」。オープンソース配布をしない限り、企業内のミラーリングは絶対に公開できません。
タグの不変性: 「不変」をオンにすることを強くお勧めします。大工場は坑血涙史を避ける: デフォルトの「可変 (Mutable) 」を維持すれば、テスト担当者はバグのある鏡像をlateラベルをつけて押し上げた以前のオンラインでの安定版のつばをカバーします。不変をオンにした後、v1.0が穴を占有すると、誰も同名のラベルでそれをカバーしたくない。発行版は正直にバージョン番号 (v1.1など) を増やすしかない源からオンラインの鏡像が意外に変わった惨劇を絶った。
スキャン設定 (Scan on push): 思い切ってオンにします。オンにすると、ECRにミラーリングをプッシュするたびに、AWSバックグラウンドは自動的にオープンソースの権威ホールライブラリ (または高度なAmazon Inspector) を呼び出して、ミラーリングのosコンポーネントを深くスキャンします知られている重大なセキュリティホール (CVE) があるかどうか、コンソールで赤い黄色のランプをつけて警告します。
第三段階: 実戦演習二 -- 地元DockerはECRプッシュストリームを徹底的に貫通する
倉庫ができました。
My-app
) ローカルコンピュータにパッケージ化されたDockerミラーを安全にクラウドに送信するにはどうすればよいですか?
多くの人がここで最初の大きな穴に遭遇します。直接実行します
Docker login
AWSのアカウントパスワードを入力すると、ログインを拒否するように指示されます。なぜなら
ECRはあなたの普通のAWSパスワードを認識していません。動的に生成されたトークンを使用しています
。
ローカルコンピュータが設定されていることを確認してください
AWS CLI (コマンドラインツール)
合法的なIAM権限を持っています。端末を開けて、三歩速通:
ステップ1: 動的ログイントークンを取得し、Dockerエンジンに注入する
次の複合コマンドを実行します
バッシュ
Aws ecr get-login-password -- region us-east-1 | docker login -- username AWS -- password-stdi n 123456789012.dkr.ecr.us-east-1.amazonaws.com
画面が飛び出したら
Login Succeeded
、あなたの地元のDockerが12時間に及ぶセキュリティ許可証を手に入れたことを説明して、クラウドとの暗号化に成功しました。
ステップ2: ローカルミラーリングに「入れ墨」 (ラベルを付ける)
ローカルにコンパイルしたばかりのミラーがあるとします
Local-app:v1.0
。ECRの規範に基づいて規範的なクラウド名を付けなければならない。そうでなければDockerは見つからない
道:
バッシュ
Docker tag local-app:v1.0ジョブ
ステップ3:全力プッシュストリーミング
バッシュ
Docker pus h 123456789012.dkr.ecr.us-east-1.amazonaws.com/my-app:v1.0
端末になじみのある
プッシャー
プログレスバー、あなたのミラーはすでにネットワークを越えて、AWSの分散セキュリティストレージの奥にしっかりと横たわっています。
第四段階: 企業レベルの高度な遊び: 最小限の予算と最高の安全性で倉庫を管理する
鏡像を押し上げるのは最初のステップで、本当の生産環境では、運送設計者は通常、2つの防御線を追加します
1.無料の清掃員を雇用する: ライフサイクルポリシー
開発チームは毎日頻繁に鏡像を構築しています。制限を加えなければ、ECRの鏡像は山のように積まれ、月末のAWSストレージ請求書はあなたを痛める。
破局構成: ECRリポジトリの詳細ページで、「ライフサイクルポリシー」-> 「ルールの作成」をクリックします。
ルールロジック: 「古いミラーをクリーンアップ」ルールを作成します。例えば、「特定のバージョンのラベルが付けられていない一時的なミラーリングは、14日を超えると自動的に物理的に破棄されます」または「最近のミラーリングされたバージョン30個だけを保持し古い自動消去」。
システムを自動的に切り離すことで、会社のクラウド資産に多額のストレージコストを節約することができます。
2.クロスゾーン自動レプリケーション
もしあなたの業務が世界的に分布しているなら (東京やバージニアなどはEKSコンテナクラスタが走っている)。東京のクラスターが毎回大洋を越えてアメリカのECRに行って数GBの大映像を引き出すと、ネットワークの遅延と地域を越えた流量料金が高くなって崩壊する。
高度な操作: ECRレジストリ設定で、「地域間コピー」をオンにします。
基礎内部者: ミラーを米国のus-east-1倉庫にプッシュすればAWSの基礎となる基幹ネットワークは自動的にバックグラウンドで非常に速いスピードで東京ap-northeast-1の同名の倉庫に鏡像を同期させます。両側のクラスターはそれぞれ現地化の機械室で「近くで流れている」というスピードを10倍に上げ、高価な公共網の多国籍交通費を免除した。
第5段階:日常運用における失敗の血と涙の歴史
ECS/EKSストリーム権限エラー (ImagePullBackOff): AWS独自のコンテナサービス (ECSやEKSなど) にいる場合
) にアプリケーションを配備すると、ノードがECRミラーを取得できないというエラーがよく発生する。99% の理由は、ECS Task RoleまたはEKS Node Roleにamazon ec2containergisterreadlyというIAM権限を与えていないからです。AWS内部でも、各サービス間のデフォルトは高い壁で構築され、互いに通じないので、明示的に認可しなければならないことを覚えておいてください。
KMSキー暗号化の取捨選択: ECRはデフォルトでミラーをエンドツーエンドで暗号化して保存します。コンプライアンスが非常に要求されている場合は、カスタムのAWS KMS (CMK) キー暗号化に切り替えることができます。ただし、カスタムキーを使用する場合、他のアカウントやサービスがチーム間でミラーを取得するときは、ECR権限だけでなく、KMSキーの復号権限も開放する必要があることに注意してくださいそうでなければ、ストリームはまだ失敗します。
まとめ
雲の原始時代には、鏡像倉庫はあなたの武器庫です。AWS ECRを利用してDockerミラーを管理する秘訣は、次の3つです
不変ラベルでバージョンの下線を守り、ライフサイクルポリシーでズボンのベルトを締めてお金を節約し、最後にIAMとリポジトリポリシーでアクセス権限をブロックします。
この規範をあなたのCI/CD自動化ラインに溶接して、それ以来、あなたの業務がどのように拡張され、どのように世界で振り回されても、あなたの後方コード資産は安定している。

