SnykのAPI開発におけるシフトレフトの取り組み
Terence Tirella
2022年2月1日
0 分で読めますSnykの開発者向けセキュリティプラットフォームは、モダンなアプリケーションを安全に構築・運用するために必要なツールを、開発者やセキュリティ担当者に提供します。Snykを使えば、セキュリティを開発の早い段階から取り入れ、DevSecOpsモデルを実践できます。モダンなアプリケーション開発チームは、シフトレフトとは、効率的で安全なアプリケーションと開発プロセスを実現するために、開発プロセスのできるだけ早い段階で開発者が必要な情報を得られるようにすることだと理解しています。
Snykでは、プラットフォームを支えるAPIやアプリケーションの開発にも、同じシフトレフトの考え方を取り入れています。他の専門的なタスクと同様に、API開発にも専用のプロセスと適切なツールが必要です。APIファーストのプラットフォームとして、APIコントラクトに対するフィードバックをできるだけ早く得ることが重要です。SnykのAPIを通じて、Snykの内外のユーザーが業界をリードするセキュリティ製品を利用できます。開発者は、SDLCを支え、安全なアプリケーションを構築するために、SnykとそのAPIを活用しています。高品質なAPIの提供はプラットフォームの成功に不可欠であり、ユーザーにそうしたAPIを提供するには、高品質なAPI開発プロセスが欠かせません。
この記事では、APIファーストのプラットフォームを構築するためにSnykが活用しているプロセスやツールをご紹介します。
なぜシフトレフトなのか?
ソフトウェア開発組織は、テスト、運用、セキュリティにおけるシフトレフトの価値を長年認識してきました。SDLCの後半でレビューを待つのではなく、継続的インテグレーションのような手法やSnykのIDEプラグインなどのツールを使えば、開発者はすぐにフィードバックを得られます。その結果、リリースの迅速化、セキュリティ態勢の向上、コスト削減、そしてアプリケーションのリリースプロセス全体に対する信頼性の向上が実現します。API開発にも同じシフトレフトのアプローチを適用できます。自動化されたツールを使い、できるだけ早くフィードバックを得ることが理想的です。
スタイルガイドとSnykのアプローチ
RESTful APIの開発は、適切なプロセスとツールを必要とする、アプリケーション開発の一分野です。SnykのV3 APIは、基盤となるプラットフォームをユーザーが利用するための、信頼性と一貫性があり、分かりやすく革新的な方法を提供できるよう設計されています。Snykでは、RESTful APIの定義における事実上の標準であるOpenAPI(別名Swagger)を使ってAPIを定義しています。しかし、API仕様が機械にも人にも読める形式になっているだけでは、使いやすさに関する目標を達成できるとは限りません。ユーザーがプラットフォームのさまざまな部分を容易に利用できるように、APIにはプラットフォーム全体での一貫性が必要です。
一貫性のあるAPIを提供するには、スタイルに関する標準が必要です。多くの組織では、コンテンツ制作者が一貫したトーンやスタイルで文章を書くための指針として、スタイルガイドを活用しています。Snykでは、API開発のための独自のスタイルガイドを作成しました。APIを開発するチーム向けのAPI Stylebookです。組織の規模が拡大し、APIを開発する人が増えるなか、このスタイルガイドを活用することでAPIの一貫性を高め、ユーザーに統一された開発者体験を提供できます。ただし、スタイルガイドを用意するだけでは十分ではありません。開発者がガイドに準拠できるよう支援する仕組みも必要です。
準拠を確保する方法の一つが、手動レビューです。APIはOpenAPIで仕様化され、バージョン管理されているため、他のコード成果物と同じレビュープロセスをAPI定義にも適用できます。開発者はAPIの変更についてプルリクエスト(PR)を作成し、同僚にフィードバックを依頼できます。この手動プロセスは準拠を確保するうえで有効ですが、あらゆる手動プロセスと同様に人的ミスが起こり得るうえ、必ずしも迅速ではありません。Snykは、世界各地にメンバーがいるリモートファーストの職場です。同僚によるAPI PRのレビューを待つと対応に時間がかかり、生産性が低下することがあります。特に、レビューの自動化が可能な部分ではその影響が大きくなります。そこで役立つのが、自動APIレビューによるシフトレフトのアプローチです。
APIを開発するSnykの開発者は、ローカルでレビューを自動化するために必要な、次の3つの要素を利用できます。
一連のルールとして定義されたSnykのAPI標準
OpenAPIで記述したAPI
開発者が記述したOpenAPI仕様が、その仕様に定められたルールに準拠しているか検証するリンティングツール
API向けのローカルリンティングツールを使えば、開発者はAPIに関するフィードバックをリアルタイムで得られます。そのため、手動レビューに進む前にAPIの問題を修正できます。リンターはCIジョブに組み込んで、準拠状況を確認することもできます。すべての開発チームが同じルールを使うことで、Snykのプラットフォームは、より一貫性のあるAPI体験をユーザーに提供できます。
Opticとのパートナーシップ
データモデルをRESTで表現することを決めた後、JSON APIを用いてAPI標準の定義を始めました。標準の草案ができると、開発チームの作業を「APIの専門家によるレビュー」で滞らせないよう、実行可能な標準、つまりコードとしての標準にすることを目指しました。シフトレフトの考え方に基づき、迅速なフィードバックを提供することを目標としました。
当初、こうしたルールの構築に使えるツールとして見つけたものは、OpenAPI 3の妥当性チェックなど、パターンマッチングによる構文検証には優れていました。しかし、API標準の実装に適用するうちに、このアプローチの限界がすぐに見えてきました。こうしたルールは読み書きが面倒(JSONPathや正規表現)で、評価対象となるAPI仕様の現時点の内容に対する制約しか表現できません。より堅牢なソリューションが必要だと判断し、Opticが最適な選択肢だと分かりました。
Opticは、APIレビューやガバナンスの製品でシフトレフトを目指すパートナーであり、API設計ファーストのワークフローをサポートしています。この分野でOpticと取り組んだ成果が、APIのリンティング製品「Optic CI」です。Optic CIでは、API標準を表現できます。ルールは、高水準のTypeScript DSLで簡単に読み書きできます。何より重要なのは、Optic CIがSnykと同じAPI開発の現実を前提としていることです。APIは常に変化し、進化しています。ルールは特定の時点の仕様ではなく、APIの変更に対して適用されます。そのため、APIの継続的な改善と洗練を促し、標準そのものを見直す過程で「リンティング例外」が大量に積み上がるのを防ぎながら、変更を管理できます。
今後の展開
Snykは、開発者ファーストかつAPIファーストのプラットフォームの構築に取り組んでいます。API開発のSDLCでシフトレフトを進めることで、開発者にフィードバックを届けています。次回は、APIのバージョン管理にツールをどのように活用しているかを含め、SnykのAPI開発プロセスをご紹介します。どうぞご期待ください。
Snykのプラットフォームを構築するチームの一員になりませんか? 募集中のエンジニア職 をご覧いただき、開発者向けセキュリティの実現に力を貸してください。



