Linus Torvalds氏は2020年に入り、Rustで記述されたドライバーやその他のコンポーネントをLinuxに追加することを承認した。そして、8月に開催された「Linux Plumbers Conference 2020」で開発者らは、LinuxのインラインコードとしてのRust利用を真剣に検討していた。そして今回、Amazon Web Services(AWS)は米国時間8月31日、Rustを積極的に採用した、コンテナー用の新たなLinux OS「Bottlerocket」の一般提供(GA)を開始した。
MozillaはRustへの資金提供を削減したかもしれないが、30年近くもCのみで記述されてきたLinuxを支えるコミュニティーがRustに前向きになっていることで、Rustの未来は保証されていると言える。
Rustが選ばれた理由は、セキュアなソフトウェアの記述が容易であるというところにある。AWSの製品マネージャーであるSamartha Chandrashekar氏によると、Rustは「スレッド安全性を保証し、メモリー関連のバグを抑止する上で役立つ」という。
Bottlerocketでは、デバイスマッパーに対するverityターゲット(dm-verity)を指定することで、セキュリティを強化している。Linuxカーネルに搭載されているこの機能により、システムの中核ソフトウェアを上書きしたり、rootkitを仕掛けたりするような攻撃を抑止する上で活用できる整合性の検査機構が提供される。また、BottlerocketはeBPF(extended Berkeley Packet Filter)も搭載している。Linuxではカーネル機能の監視を安全かつ効率的に実施するためにeBPFが利用されている。
この新たなLinuxによって、本番サーバーとの管理面での結び付きを疎にできるようになる。管理者コンテナーは「Amazon Linux 2」上で稼働するようになっている。また、Bottlerocketのトラブルシューティングとデバッグのためのユーティリティーが含まれ、昇格された権限で実行される。その目標は、個々の本番Bottlerocketインスタンスに対するログ出力について、高度なデバッグとトラブルシューティングのためのものを除き、ほとんどを不必要にするというところにある。
Bottlerocketのインスタンスは、できる限りセキュアな実行を保証するために、「SELinux」(Security-Enhanced Linux)のenforcing(強制)モードで実行される。これにより、コンテナーとホストOSの隔離性を向上させている。
一般的に、SELinuxを使うという話になった場合、管理者はアプリケーションの実行にひと苦労するのではないかという恐れを抱く。しかしAWSは、Bottlerocketではそのようなことにはならないと断言している。さらにセキュリティだけでなく、Bottlerocketは保守が迅速かつ容易になるように設計されている。
Bottlerocketのこうした特徴は、コンテナー指向の他のLinuxディストリビューションと同様、コンテナーの実行に本質的に必要となるもののみを含めることで実現されている。Datadog、Splunk、Puppetなど複数のAWSのパートナーが、既にBottlerocketでアプリケーションをサポートしている。
Bottlerockを管理するには、まず 「Amazon Elastic Container Service(ECS)」や「Amazon Elastic Kubernetes Service(EKS)」を利用する必要がある。
なお、Bottlerocketはオープンソースプロジェクトであり、その設計ドキュメントとコード、ビルドツール、テスト、ドキュメントは全て、GitHub上でホストされている。またLinuxカーネルや、コンテナーのランタイムであるcontainerdといった標準化されたオープソース要素だけでなく、Bottlerocket自身のコードもApache 2.0やMITライセンスのいずれかを選択する形でライセンスされる。さらに、Bottlerocketに手を加えた場合、そのポリシーガイドラインに従って自らが使用するビルドを「Bottlerocket Remix」と呼べるようになる。
AWSユーザーにとってのBottlerocketの魅力は、お気に入りのパブリッククラウド用の、簡単に使用できるセキュアなコンテナー向けLinuxだというところにある。
この記事は海外CBS Interactive発の記事を朝日インタラクティブが日本向けに編集したものです。