SnykとBitbucketのベストプラクティス早見表
2022年3月3日
0 分で読めますSnykとAtlassianのパートナーシップが拡大を続ける中、Bitbucketとの連携を最大限に活用するためのベストプラクティス早見表を作成しました。これにより、Bitbucketを使ってコードをより安全に管理・保管するとともに、Snykでコードや依存関係を継続的に監視し、潜在的な脆弱性を検出できます。
この記事では、次の7つのベストプラクティスを紹介します。
Bitbucket上のコードや設定ファイルに認証情報を保存しない
機密データを削除する
アクセスを厳格に管理する
SECURITY.mdファイルを追加する
Bitbucketアプリを検証する
コードインサイトでワークフローにセキュリティのヒントを取り入れる
プルリクエストにセキュリティテストを追加する

1. Bitbucket上のコードや設定ファイルに認証情報を保存しない
パスワード、APIキー、その他の認証情報を誰でもアクセスできるコードに保存すると、アプリケーションや組織が危険にさらされます。そのため、そもそも認証情報がBitbucketリポジトリにプッシュされないよう対策を講じる必要があります。
必要に応じてビルドを失敗させ、コードがBitbucketにプッシュされるのを防ぐことで、git-secrets-scanパイプラインは機密データの公開を未然に防ぎます。このツールはファイルをスキャンしてハードコードされたデータを検出し、セキュリティレポートで警告します。
また、truffleHogを使って、コミット履歴やブランチを含むGitリポジトリをスキャンし、誤って混入したシークレットを監査できます。pre-commitフックを使えば、特定のシークレットを開発者がプッシュできないようにすることもできます。
さらに、Vault Secrets export pipelineを使ってHashicorp Vaultのようなシークレット管理ツールに接続できます。これにより、リポジトリにシークレットを保存する代わりに、必要なときにHashiCorp vaultから自動的に取得できます。
2. 機密データを削除する
前述のヒントと同様に、Bitbucketに保存されているコードから機密データをすべて削除することが重要です。すでに公開されたトークンやパスワードは、悪意のある第三者に盗まれた可能性があるため、無効化しましょう。
さらに、Gitの履歴を消去し、書き換えた履歴を強制プッシュする必要があります。シークレットを無効化してGitの履歴を消去したら、漏えいした可能性のある個人情報による影響を評価しましょう。
Adaptivist ScriptRunnerを使うと、シークレット管理を自動化して、こうした作業を効率化できます。
3. アクセスを厳格に管理する
セキュリティ上の問題の多くは、人的ミスや誤った判断が原因です。そのため、強固なアクセス制御を導入することが重要です。簡単な設定をいくつか行うだけで、Bitbucket上のコードへの不正アクセスのリスクを軽減できます。
強固なアクセス制御には、次のようなものがあります。
すべてのBitbucketアカウントで2要素認証を必須にすると、2つ目の認証ステップが加わり、セキュリティをさらに強化できます。
開発者がアカウントを共有できないようにすることで、最小権限と知る必要のある人だけに情報を共有するという原則を徹底できます。
ソースコードにアクセスできる物理デバイスを適切に保護すれば、盗難時に資産を守れます。
退職したユーザーのBitbucketアクセス権を取り消すことは、知的財産を保護するうえで不可欠です。
4. SECURITY.mdファイルを追加する
SECURITY.mdファイルを使うと、プロジェクトに関する重要なセキュリティ情報を、今後の貢献者やメンテナーに伝えられます。このファイルには、次の内容を含めます。
脆弱性の報告方針: セキュリティ上の問題を報告する方法。連絡先、連絡方法、報告時に必要な情報を記載します。
セキュリティ更新方針: 新たに発見された脆弱性とその潜在的な影響について、プロジェクトがユーザーに通知する方法を記載します。
セキュリティ関連の設定: HTTPS、認証レイヤー、パスワードリセットの手順など、コードの利用時にユーザーに推奨する設定を記載します。
既知のセキュリティ上の課題と今後の改善: 未対応のセキュリティ改善項目を挙げ、プロジェクトのユーザー自身が対策する必要があるリスク領域を示します。
5. Bitbucketアプリを検証する
Bitbucketアプリはサードパーティによって開発されているため、安全に利用できるか検証することが重要です。まず、必要最小限のアクセス権のみを許可することで、アプリケーションのアクセス権が不正ユーザーによるコードへのアクセスを防いでいることを確認しましょう。また、使わなくなったアプリは削除または無効化します。
アプリの作成者が個人であれ組織であれ、その信頼性も確認しましょう。セキュリティは最も弱い部分の強さに左右されるため、信頼できる開発者が作成したアプリを選ぶことが重要です。
最後に、Bitbucketアプリ自体のセキュリティ対策を評価します。対策が不十分だと、侵害によって攻撃者にコードへのアクセスを許してしまうおそれがあります。利用中のアプリを定期的に監査すれば、今も必要であり、安全であることを確認できます。
6. コードインサイトでワークフローにセキュリティのヒントを取り入れる
SnykとBitbucketの連携では、プルリクエストをスキャンし、新たな脆弱性の混入を防げます。Snykは、潜在的な脆弱性に対応する詳細なインライン注釈をプルリクエスト内に直接表示するため、開発者はすぐに情報に基づいた判断を下せます。
依存関係の脆弱性情報に加え、Snykは修正に向けた推奨アップグレードや、Snyk Intel Vulnerability Databaseに基づく実用的な対策のヒントを提供します。
7. プルリクエストにセキュリティテストを追加する
Bitbucketフックを使うと、プルリクエストごとにコードスキャンを実行し、コードの品質とセキュリティを確認できます。たとえば、webhookでSonarCloudを使ってバグやコードスメルを検出したり、Code Climateでコードレビューを自動化したりできます。
Bitbucketフックを使えば、Snykは各プルリクエストをスキャンし、普段の開発ワークフローの中で脆弱性やライセンス上の問題を検出できます。これにより、開発チームは必要なセキュリティ情報をできるだけ早い段階で得られます。