New – FreeRTOS Extended Maintenance Plan for Up to 10 Years

Last AWS re:Invent 2020, we announced FreeRTOS Long Term Support (LTS) that offers a more stable foundation than standard releases, as manufacturers deploy and later update devices in the field. FreeRTOS is an open source, real-time operating system for microcontrollers that makes small, low-power edge devices easy to program, deploy, secure, connect, and manage. In […]

Introducing Karpenter – An Open-Source High-Performance Kubernetes Cluster Autoscaler

Today we are announcing that Karpenter is ready for production. Karpenter is an open-source, flexible, high-performance Kubernetes cluster autoscaler built with AWS. It helps improve your application availability and cluster efficiency by rapidly launching right-sized compute resources in response to changing application load. Karpenter also provides just-in-time compute resources to meet your application’s needs and […]

New – AWS Marketplace for Containers Anywhere to Deploy Your Kubernetes Cluster in Any Environment

More than 300,000 customers use AWS Marketplace today to find, subscribe to, and deploy third-party software packaged as Amazon Machine Images (AMIs), software-as-a-service (SaaS), and containers. Customers can find and subscribe containerized third-party applications from AWS Marketplace and deploy them in Amazon Elastic Container Service (Amazon ECS) and Amazon Elastic Kubernetes Service (Amazon EKS). Many […]

オープンソース プロジェクトをサプライ チェーン攻撃から守る

この記事は Google オープンソース プログラム オフィス、Anne Bertucio による Google Open Source Blog の記事 “Protect your open source project from supply chain attacks” を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。


米国の大統領令から鍵署名パーティまで、2021 年はサプライ チェーンのセキュリティが取りざたされる一年になっています。オープンソースのメンテナンス担当者がプロジェクトのサプライ チェーン全体の攻撃面や脅威ベクトルについて知れば、克服できないと感じて打ちひしがれるかもしれません。朗報なのは、2021 年がサプライ チェーン セキュリティ ソリューションの一年でもあったということです。行うべき作業はまだ多く残されており、既存のソリューションも多くの改善の余地を抱えています。しかし、サプライ チェーンを強化してセキュリティ侵害を防ぐために、今すぐプロジェクトに適用できる予防措置があります。

All Things Open 2021 の参加者は、クイズゲームを通してサプライ チェーンのセキュリティに関するベスト プラクティスを学びました。このブログ投稿では、クイズの問題と解答、そして予防措置の選択肢を紹介します。また、この投稿はサプライ チェーン攻撃からオープンソース プロジェクトを守りたい方向けの初心者向けガイドにもなります。以降で紹介する推奨事項は、SLSA フレームワークOpenSSF Scorecards の重要事項に従っており、その多くは Allstar プロジェクトを使って自動的に実装できます。

典型的なソフトウェア サプライ チェーンと、その接続点で発生する可能性がある攻撃の例
典型的なソフトウェア サプライ チェーンと、その接続点で発生する可能性がある攻撃の例

Q1 : デベロッパー アカウントの乗っ取りを防ぐためにするべきことは何ですか?

  1. 正解 : 多要素認証を利用する(可能ならセキュリティ キー)
  2. コア メンテナンス担当者向けの共有アカウントを利用する
  3. パスワードはすべて rot13 で記述する
  4. IP 許可リストを利用する

理由と解説 : 悪意のある人物がデベロッパー アカウントにアクセスできる場合、既知の貢献者になりすまして悪意のあるコードを送信する可能性があります。貢献者には、commit を送るプラットフォームだけでなく、メールなどの貢献に関連するアカウントに対して、多要素認証(MFA)を使うことを推奨しましょう。可能であれば、MFA の方式でお勧めなのはセキュリティ キーです。

Q2 : 悪意のある commit をマージしないために、するべきことは何ですか?

  1. 正解 : すべての commit で、commit の作成者以外の誰かによるレビューを必須とする
  2. すべての commit に対して自動実行テストをする
  3. すべての commit に対して ‘bitcoin’ という単語をスキャンする
  4. 1 年以上前からアカウントを使っている貢献者からの commit のみを受け付ける

理由と解説 : セルフマージ(一方的な変更とも呼ばれます)には、1)貢献者のアカウントを乗っ取った攻撃者がプロジェクトに悪意のあるコードを注入する可能性がある、2)善意の貢献者が意図しないセキュリティ リスクを含む commit をマージする可能性がある、という 2 つのリスクがあります。悪意のあるコードの送信や意図しない脆弱性を回避するために役立つのが、身元が明らかで信頼できる別の人の目です。可能であれば、GitHub のブランチ保護設定などを使い、自動要件として設定しましょう。Allstar などのツールも、この要件の適用に役立ちます。これは、SLSA レベル 4 に対応します

Q3 : CI/CD パイプラインで使うシークレットはどのように保護しますか?

  1. 正解 : シークレット マネージャー ツールを利用する
  2. シークレットへのアクセスを管理するメンテナンス担当者を任命する
  3. シークレットを環境変数に保存する
  4. シークレットを別のリポジトリに保存する

理由と解説 : 「多層防御」というセキュリティの考え方は、複数の異なる防御レイヤーを設けてシステムやシークレット * などの機密データを守ることを指します。シークレット マネージャー ツール(GCP ユーザーの Secret Manager や、HashiCorp Vault、CyberArk Conjur、Keywhiz など)を使うと、ソースコードにシークレットをハードコードする必要はなくなり、集中管理や機能の監査を実現できます。また、シークレットの漏洩を防ぐ認可レイヤーを導入することにもなります。

* 機密データを CI システムに保存する場合は、それが CI/CD のためだけに使われることや、パスワードや ID マネージャーに格納するほうが適したデータではないことを確認してください。

Q4 : CI/CD システムを不正利用から守るためにするべきことは何ですか?

  1. 正解 : 最小権限の原則に従ったアクセス制御を行う
  2. すべての pull リクエストと commit に対して結合テストを行う
  3. すべての貢献者に GitHub のロール “Collaborators” を設定する
  4. ローカルで CI/CD システムを実行する

理由と解説 : デフォルトでプロジェクト リポジトリに対して「必要最低限のアクセス」を付与することで、意図しないアクセスと不正利用の両方から CI/CD システムを守ることができます。テストを行うことは重要ですが、デフォルトですべての commit と pull リクエストに対してレビュー前にテストを実行すると、CI/CD システムのコンピューティング リソースの意図しない不正利用につながる可能性があります。

Q5 : ビルド中のセキュリティ侵害を避けるためにするべきことは何ですか?

  1. 正解 : ビルドの定義や構成を build.yaml などのコードで定義する
  2. コードを侵害する時間を攻撃者に与えないように、可能な限りビルド時間を短縮する
  3. ビルドシステムには LEGO ブランドの部品だけを使い、代替品は認めない
  4. 攻撃者の手がかりとなるものを残さないように、ビルドログを削除する

理由と解説 : 手動でビルド手順を実行すると、意図しない構成ミスが紛れ込む可能性があります。しかし、ビルド スクリプト(ビルドやビルドの手順を定義した build.yaml などのファイル)を使えば、手動でビルドする必要はなくなります。加えて、悪意のある人物がビルドを改ざんしたり、レビューされていない変更を紛れ込ませたりする機会を減らすことにもなります。これは、SLSA レベル 1~4 に対応します

Q6 : 依存関係の利用前評価はどのように行うべきですか?

  1. 正解 : Scorecardsdeps.dev などのツールを使ってリスクと推移的な変更を評価する
  2. パッケージ URL の隣に表示される小さな「鍵」アイコンをチェックする
  3. GitHub で最低 1,000 個のスターが付いている依存関係のみを利用する
  4. メンテナンス担当者が一度も変更されていない依存関係のみを利用する

理由と解説 : 1 つの決定的な手法でパッケージが「良い」か「悪い」かを判断することはできません。セキュリティ プロファイルや許容できるリスクは、プロジェクトごとに異なります。プロジェクトにとって依存関係が「安全」であるかどうかを判断するうえで役立つのは、依存関係やどのような変更が推移的に取り込まれるかの情報を集めることです。Open Source Insights(deps.dev)などのツールは、最初のレイヤーと推移的依存関係をマッピングしてくれます。一方の Scorecards は、セキュリティ ポリシー、MFA、ブランチ保護の使用有無など、複数のリスク評価指標に基づいてパッケージのスコアを算出します。

使っている依存関係を把握できたら、定期的に Open Source Vulnerabilities などの脆弱性スキャンツールを実行します。そうすることで、常に最新のリリースやパッチについての情報を得ることができます。多くの脆弱性スキャンツールは、アップグレードの自動適用にも対応しています。

Q7 : ビルドが自分の意図したビルドであることを保証する(すなわち、検証する)ために、何をするべきですか?

  1. 正解 : 来歴の認証を生成できるビルドサービスを利用する
  2. 最新の commit をチェックし、信頼できるコミッターのものであることを確認する
  3. ステガノグラフィーを使ってプロジェクトのロゴをビルドに埋め込む
  4. リリースのたびに適合テストを行う

理由と解説 : ビルドの出所(ビルドの来歴)とアーティファクトを表示すると、ビルドが改ざんされていないことや、正しいものであることをユーザーに示すことができます。来歴にはさまざまな要素があります。こういった要素を実現する 1 つの方法は、来歴を表示するために必要なデータを生成と認証するビルドサービスを利用することです。これは、SLSA レベル 2~4 に対応します

Q8 : レジストリからアーティファクトを選ぶ際に、求めるべきことは何ですか?

  1. 正解 : アーティファクトが暗号学的に検証可能な形で署名されていること
  2. アーティファクトが(墓から盗み出されて)呪われたものでないこと
  3. タイムスタンプ : 最新のアーティファクトのみを使う
  4. 公式認定 : 信頼できるブランドや標準化団体のロゴを探す

理由と解説 : 来歴の生成やビルドの署名は、自分のプロジェクトで行うべきことであるだけでなく(SLSA レベル 2~4)、他者のアーティファクトを使うときも、同じ証明を求めるべきです。ロゴなどのブランドに基づく認定形態は偽造可能で、タイポスクワッティングによって正当性を偽装できます。署名などの偽造できない証明を求めるようにしてください。たとえば Sigstore は、OSS プロジェクトでビルドに署名したり、他者のビルドを検証したりする際に役立ちます。

プロジェクトのセキュリティ改善は継続的な取り組みです。ここで紹介した推奨事項の中には、プロジェクトですぐに採用するのが現実的ではないものもあるかもしれません。しかし、プロジェクトのセキュリティ向上のために行える手順はすべて、正しい方向に向かう一歩です。
オープンソース プロジェクトのセキュリティに関連するリソース :

  • SLSA : サプライ チェーンのセキュリティ レベルに関するフレームワーク
  • Scorecards : セキュリティのベスト プラクティスの使用状況を測定
  • Allstar : セキュリティのベスト プラクティスを強制する GitHub アプリ
  • Open Source Insights : オープンソース プロジェクトの依存関係の視覚化と検索
  • OSV : オープンソース用の脆弱性データベースと自動化インフラストラクチャ

Reviewed by Eiji Kitamura – Developer Relations Team<!—->

Google Dev Library のご紹介––デベロッパーのための新しいオープンソース プラットフォーム

この記事は Google Developers Blog の記事 “What is Google’s Dev Library––a new open-source platform for developers” を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
Dev Library ロゴのバナー 世界中のデベロッパーが、オープンソースのツールやチュートリアルを作成しています。しかし、それを見つけてもらうのは簡単なことではありません。多くの場合、公開されるコンテンツは、GitHub から Medium まで、たくさんのサイトにまたがっています。そこで Google は、Google のテクノロジーに関連する優れたプロジェクトを 1 か所にまとめて紹介する場所を作ることを決定し、Dev Library を公開しました。Dev Library は、Google のテクノロジーを使って構築されたプロジェクトや、それに関する記事を厳選して集めたアーカイブです。

このプラットフォームには、ブログ投稿やオープンソース ツールが掲載され、わかりやすい操作で閲覧できるようになっています。プロダクトの領域として、機械学習、Flutter、Firebase、Angular、クラウド、Android を扱っています。

Dev Library がほかと異なる点は何ですか?

皆さんが申請したすべての記事やプロジェクトがサイトに掲載されるとは限りません。Google のエキスパートからなるチームが、それぞれのトピックの正確性や関連性を吟味します。そのため、サイトに掲載されたコンテンツは、Google が承認したことを意味しています。

どのように役立ちますか?

目につきやすくなります。広い専門性を持っているデベロッパーでも、その知識をアピールするのは大変なことです。Dev Library は、皆さんが世界に向かって「ねえ!すばらしいプロジェクトを作ったんだけど、ぜひ見てみない?」と声をあげる方法の 1 つです。

さらに、同じように Dev Library でプロジェクトを公開している貢献者仲間のネットワークを得ることもできます。

貢献者の皆さんによる作業を応援するため、1 人ずつ専用の作者ページを作成して、1 か所でプロジェクトを一覧できるようにしています。

Dev Library ではどんなコンテンツが見つかりますか?

このサイトに幅広いコンテンツが掲載されている証として、公開されているコンテンツや作成したデベロッパーの動画インタビューの一部を紹介しましょう。

最終的な目的は何ですか?

優れた文章を書けるデベロッパーを増やすことです。あらゆる種類のプロジェクトを経験し、知識を備えているにもかかわらず、それを表現するのに苦労するデベロッパーを見かけることは少なくありません。しかし、自分の作業について文章化できるデベロッパーがもっと必要です。経験してきた苦労や実際に書いたコードブロック、プロジェクトを形にする方法といった内容です。

Dev Library を通じて、変化を生み出したいと思っています。

優れた文章を書けるデベロッパーを増やし、マーケティングの質を向上させ、詳しい説明を待っている世界中のユーザーにアプローチしてもらえることを期待しています。

どうすれば Dev Library をサポートできますか?

Dev Library をさらに成長させるために、皆さんにご協力いただける方法が 2 つあります。

  1. Dev Library で公開したい優れたコンテンツをお持ちの方は、こちらからレビューの申請をしてください。
  2. フィードバックも歓迎しています。Dev Library サイトに追加や変更の希望がある方は、こちらの簡単なフィードバック フォームに入力するか、GitHub で Issue を送信してください。

皆さんからの申請やフィードバックを楽しみにしております。

Dev Library が皆さんのオープンソース作品を公開するすばらしい場所になるように、ご協力をお願いいたします。