実践Terraform ch1 セットアップ

AWSTerraform勉強メモ

出典: 


AWS

IAMユーザー

  • 練習用に、とりあえずのAdministratorAccess権限のユーザをつくる

    • 本番運用ではちゃんとminimum privilegeでつくろうね

AWS CLI, クレデンシャル

  • 生で入れたくないのでコンテナで遊ぶ
  • 認証情報を渡す用のDocker Compose環境

[https://github.com/wand2016/terraform-practice:embed:cite]

docker-compose run aws sts get-caller-identity --query Account --output text
  • IAMユーザのIDが出力される
64********60

Terraform

  • 生で入れたくないのでコンテナで遊ぶ
  • 認証情報を渡す用のDocker Compose環境

[https://github.com/wand2016/terraform-practice:embed:cite]

docker-compose run terraform --version
Terraform v0.12.21

git-secrets

[https://github.com/awslabs/git-secrets:embed:cite]

  • 認証情報が漏れてクラウド破産しちゃうのをふせぐ
  • 導入
git clone git@github.com:awslabs/git-secrets.git
cd git-secrets
make install
  • commit時に弾くpatternをglobalのコンフィグに設定
git secrets --register-aws --global
OK
  • 確認
git config --global --list
  • 除外設定もできるみたい
...
secrets.providers=git secrets --aws-provider
secrets.patterns=(A3T[A-Z0-9]|AKIA|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASIA)[A-Z0-9]{16}
secrets.patterns=("|')?(AWS|aws|Aws)?_?(SECRET|secret|Secret)?_?(ACCESS|access|Access)?_?(KEY|key|Key)("|')?\s*(:|=>|=)\s*("|')?[A-Za-z0-9/\+=]{40}("|')?
secrets.patterns=("|')?(AWS|aws|Aws)?_?(ACCOUNT|account|Account)_?(ID|id|Id)?("|')?\s*(:|=>|=)\s*("|')?[0-9]{4}\-?[0-9]{4}\-?[0-9]{4}("|')?
secrets.allowed=AKIAIOSFODNN7EXAMPLE
secrets.allowed=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
  • gitリポジトリの雛形にhookを追加する
git secrets --install ~/.git-templates/git-secrets
git config --global init.templatedir '~/.git-templates/git-secrets'
✓ Installed commit-msg hook to /home/wand/.git-templates/git-secrets/hooks/commit-msg
✓ Installed pre-commit hook to /home/wand/.git-templates/git-secrets/hooks/pre-commit
✓ Installed prepare-commit-msg hook to /home/wand/.git-templates/git-secrets/hooks/prepare-commit-msg
git config --global --list
...
init.templatedir=~/.git-templates/git-secrets
  • AWSの認証情報をcommitしようとすると怒ってくれる
git commit -m "test"
env_sample:1:AWS_ACCESS_KEY_ID=AKIA****************
env_sample:2:AWS_SECRET_ACCESS_KEY=**************

[ERROR] Matched one or more prohibited patterns

Possible mitigations:
- Mark false positives as allowed using: git config --add secrets.allowed ...
- Mark false positives as allowed by adding regular expressions to .gitallowed at repository's root directory
- List your configured patterns: git config --get-all secrets.patterns
- List your configured allowed patterns: git config --get-all secrets.allowed
- List your configured allowed patterns in .gitallowed at repository's root directory
- Use --no-verify if this is a one-time false positive