このリポジトリを公開する前に、以下のセキュリティチェックを完了しました:
- AWS Account ID削除: プレースホルダー
<ACCOUNT_ID>に置き換え - ハードコードされたパスワード削除:
ec2/baseball_historical_import.pyを.gitignore追加 - 機密設定ファイル除外:
phase1-config.jsoncdk.context.jsonmetabase-policy.json
- 環境変数:
.envファイルが.gitignore済み - Slack Webhook: 環境変数経由で管理、ハードコード無し
- AWS認証情報: GitHub Secretsで管理、コードには未含有
以下の情報は.gitignoreにより保護されています:
.env # 環境変数(SLACK_WEBHOOK_URL等)
cdk.context.json # AWS Account ID含む
phase1-config.json # EC2設定(Account ID含む)
ec2/baseball_historical_import.py # RDSパスワード含む
metabase-policy.json # Account ID含むIAMポリシー
response.json # Lambdaテスト結果
cdk.out/ # CDK生成ファイル
このリポジトリをクローンして使用する場合、以下の設定が必要です:
# .envファイルを作成
SLACK_WEBHOOK_URL=https://hooks.slack.com/services/YOUR/WEBHOOK/URL# AWS CLIで認証設定
aws configure
# または環境変数
export AWS_ACCESS_KEY_ID=<your-access-key>
export AWS_SECRET_ACCESS_KEY=<your-secret-key>
export AWS_DEFAULT_REGION=ap-northeast-1リポジトリSettings → Secrets and variables → Actionsで設定:
AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY
# IAMユーザー作成
aws iam create-user --user-name metabase-athena-user
# ポリシーをアタッチ(metabase-policy.jsonのサンプルを参考)
aws iam put-user-policy --user-name metabase-athena-user \
--policy-name MetabaseAthenaAccess \
--policy-document file://metabase-policy.json.example
# アクセスキー生成
aws iam create-access-key --user-name metabase-athena-userセキュリティ上の問題を発見した場合:
- 公開Issue報告は避けてください
- GitHubのSecurity Advisoriesを使用
- または直接メール: [セキュリティ担当者のメールアドレス]
| バージョン | サポート状況 |
|---|---|
| main | ✅ サポート中 |
| その他 | ❌ サポート終了 |
このプロジェクトは元々RDS PostgreSQLを使用していましたが、S3 Data Lakeに移行しました。
- RDS関連コード(
ec2/ディレクトリ)はレガシーとして残していますが、現在は使用していません - これらのファイルには機密情報が含まれるため、
.gitignoreで除外しています
Athenaは従量課金制です:
- $5.00 per TB(スキャンしたデータ量)
- 現在のデータ量: 205KB(ほぼ無料)
- 月間100回クエリでも約$0.005(0.5円)
- 最小権限の原則: IAMロールには必要最小限の権限のみ付与
- 環境変数の使用: 認証情報は環境変数で管理
- 定期的なキーローテーション: 3ヶ月ごとにアクセスキーを更新
- CloudWatch Alarms: エラー/タイムアウト/スロットリングを監視
- S3バケット暗号化: SSE-S3による自動暗号化
- S3 Block Public Access: 全てのパブリックアクセスをブロック
LICENSEを参照してください。