GitHubでは、リポジトリやOrganizationに対して適切な権限管理を行うことが重要です。
| 権限レベル | 説明 | 主な操作 |
|---|---|---|
| Read | 読み取り専用 | コードの閲覧、Issue・PRの閲覧 |
| Triage | Issue・PR管理 | Issueのラベル付け、Assignee設定 |
| Write | 書き込み権限 | コードのPush、PRのマージ |
| Maintain | リポジトリ設定管理 | ブランチ保護、Webhookの設定 |
| Admin | 完全な管理権限 | 権限管理、リポジトリ削除 |
最小権限の原則を遵守します。必要最小限の権限のみを付与し、過剰な権限を避けます。
外部協力者(読み取りのみ): Read
開発メンバー: Write
テックリード・リードエンジニア: Maintain
プロジェクトオーナー: Admin
機密情報をリポジトリに含めないことは、セキュリティの基本です。
GitHubでは、以下の3種類のSecretsを管理できます:
環境変数は .env ファイルで管理し、.gitignore に必ず追加します。
# 環境変数ファイル
.env
.env.local
.env.*.local
.env.production
.env.staging
代わりに、.env.example ファイルをリポジトリに含め、必要な環境変数の例を示します。
# データベース接続情報
DATABASE_URL=postgresql://user:password@localhost:5432/dbname
# API設定
API_KEY=your_api_key_here
API_SECRET=your_api_secret_here
# アプリケーション設定
NODE_ENV=development
PORT=3000
GitHub Actions のワークフローで Secrets を使用する場合の例:
name: Deploy
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Deploy to production
env:
API_KEY: ${{ secrets.API_KEY }}
DATABASE_URL: ${{ secrets.DATABASE_URL }}
run: |
npm run deploy
GitHubの個人アクセストークン(PAT)を使用する場合:
Dependabotを有効にすると、依存パッケージの脆弱性を自動的に検出し、更新PRを作成してくれます。
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
セキュリティを強化するために、以下の設定を推奨します:
詳細はブランチ戦略を参照してください。
git-filter-repo や BFG Repo-Cleaner を使用して履歴から削除