Amazon Web Services ブログ

Amazon CodeGuru Reviewer Secrets Detector でハードコードのシークレットを特定し、AWS Secrets Manager を使いシークレットを保護

Amazon CodeGuru は、Java アプリケーションと Python アプリケーションをスキャンしてプロファイリングすることで、コードの品質を向上させ、コードレビューを自動化するのに役立ちます。CodeGuru Reviewer は、コード内の潜在的な欠陥やバグを検出できます。例えば、セキュリティの脆弱性、リソースリーク、同時実行性の問題、誤った入力検証、AWS のベストプラクティスからの逸脱に関する改善を示唆します。

最もよく知られているセキュリティプラクティスの 1 つは、パスワード、API キー、認証情報などのシークレットの集中化とガバナンスです。他の多くのデベロッパーが厳しい納期に直面しているように、私はコード内のシークレットを管理して使用したり、ローカル開発中にプレーンテキストの環境変数を使用したり、静的シークレットをハードコーディングしたりして、不注意にコミットしてしまうことがよくありました。もちろん、私はいつもそれを後悔しており、すべてのリポジトリでこれらのシークレットを検出して保護できる自動化された方法があればいいのにと思っていました。

2021 年 11 月 29 日(米国時間)、新しい Amazon CodeGuru Reviewer Secrets Detector を発表しました。これは、デベロッパーがパスワード、API キー、SSH キー、アクセストークンなどのソースコードまたは設定ファイル内のシークレットを検出するのに役立つ自動化ツールです。

これらの新しいディテクタは、機械学習 (ML) を使用してコードレビュープロセスの一環としてハードコードされたシークレットを特定し、マージおよびデプロイする前に、すべての新しいコードにハードコードされたシークレットが含まれていないことを確認するのに役立ちます。Secrets Detector は、Java と Python のコードに加えて、設定ファイルやドキュメントファイルもスキャンします。CodeGuru Reviewer は、認証情報、API キー、およびあらゆる種類のシークレットを安全かつ自動的に保存、ローテーション、管理、取得できるマネージドサービスである AWS Secrets Manager を使用して、シークレットを保護するための修復ステップを提案します。

この新機能は CodeGuru Reviewer サービスの一部として追加費用なしで含まれており、AWS、Atlassian、Datadog、Databricks、GitHub、Hubspot、Mailchimp、Salesforce、SendGrid、Shopify、Slack、Stripe、Tableau、Telegram、Twilio などの最も一般的な API プロバイダーをサポートします。ここで完全なリストをご確認ください。

Secrets Detectors の動作
まず、AWS Secrets Manager コンソールから CodeGuru を選択します。この新しいフローにより、ハードコードされたシークレットを特定するために、新しいリポジトリを関連付け、完全なリポジトリ分析を実行することができます。

新しいリポジトリの関連付けには数秒しかかかりません。GitHub アカウントを接続し、hawkcd という名前のリポジトリを選択します。このリポジトリには、Java、C#、JavaScript、および設定ファイルがいくつか含まれています。

数分後、フルリポジトリが正常に関連付けられ、フルスキャンが完了します。また、DemoFullRepositoryAnalysisSecrets というデモリポジトリ分析を見ることもできます。このデモは、CodeGuru コンソールの AWS アカウントの [完全なリポジトリ分析] の下にあります。

リポジトリ分析を選択すると、ハードコードされたシークレットに関する 1 つのレコメンデーションを含む 42 のレコメンデーションが見つかります (Type=Secrets でレコメンデーションをフィルタリングすることができます)。CodeGuru Reviewer は、 .travis.yml ファイルでハードコードされた AWS アクセスキー ID を特定しました。

このレコメンデーションは、これらのシークレットを安全に保存することの重要性を強調し、問題の詳細を知るためのリンクを提供し、特定されたシークレットをローテーションして、悪意のある攻撃者が今後再利用できないようにすることを提案しています。

CodeGuru Reviewer では、シークレットが表示されているファイルやコード行に正確にジャンプできるため、より深く掘り下げてコンテキストを理解し、ファイル履歴を検証し、アクションをすばやく実行できます。

最後になりましたが、このレコメンデーションには [認証情報を保護] ボタンが含まれています。このボタンを使用すると、AWS Secrets Manager コンソールにすばやく移動して、適切な名前と値で新しいシークレットを作成できます。

ソースコードからプレーンテキストのシークレットを削除し、AWS Secrets Manager からシークレットの値を取得するようにアプリケーションを更新します。多くの場合、シークレットの値の代わりにシークレットの名前を保存するために、現在の設定構造を維持し、既存のパラメータを使用できます。

シークレットが安全に保存されると、AWS Secrets Manager は、AWS SDK を使用する多くのプログラミング言語で新しいシークレットを取得するコードスニペットも提供します。これらのスニペットを使用すると、時間を節約でき、必要な SDK 呼び出しのほか、エラー処理、復号化、およびデコードのロジックを含めることができます。

完全なリポジトリ分析を実行する方法を示しました。もちろん、ハードコードされたシークレットやその他の問題が今後発生するのを防ぐために、新しいプルリクエストごとに同じ分析を継続的に実行できます。

CodeGuru Reviewer で今すぐ利用可能
CodeGuru Reviewer Secret Detector は、CodeGuru Reviewer が利用可能なすべてのリージョンで、追加費用なしで利用できます。

CodeGuru Reviewer を初めて使用する場合は、最大 100,000 行のコードのリポジトリを使用して 90 日間無料で試すことができます。コードが AWS CodeCommit、BitBucket、GitHub のいずれでホストされているかにかかわらず、リポジトリを接続してフルスキャンを開始するのに数分しかかかりません。GitHub を使用している場合は、GitHub Actions インテグレーションもチェックしてください

Secrets Detector の詳細については、技術ドキュメントを参照してください。

Alex

原文はこちらです。