アクセスキー/シークレットキー

アクセスキー/シークレットキーって何?

  • AWSのリソースに、CUI操作するときに使う認証情報です。
  • AWSリソースにアクセスできるようになる重要な認証情報なので、github上にあげたりしないようにしましょう!

こんな感じの文字列です

  • アクセスキー : AKIAZZZZZZZZWWWWWWWW
  • シークレットキー : aaaabbbb+ccccddddeeeeffffgggg/hhhh
  • アクセスキーと、シークレットキーの両方を使います。

AWSのリソースってCUIで操作するの?

  • 操作する方法は以下があります
    • ブラウザからAWSのコンソールにログインして、GUIで操作する。
    • AWSクライアントをインストールしてCUIで操作する。
    • terraform/Ansibleなどのツールで操作する。

それぞれの認証方法

  • AWSのコンソール
    • ログインID/パスワード/MFAでログインします。
    • アクセスキー/シークレットキーとは別の認証情報になります。
  • AWSクライアント
    • AWSクライアントをインストールした後に以下コマンドで設定します。
      • regionは、AWS内でどこのリージョン(東京とかアメリカ北西とか)を使うかを指定します。
      • outputはAWSクライアントの戻り値をどの形式で出力するか指定します。
% aws configure AWS Access Key ID [None]: AKIAZZZZZZZZWWWWWWWW AWS Secret Access Key [None]: aaaabbbb+ccccddddeeeeffffgggg/hhhh Default region name [None]: ap-northeast-1 Default output format [None]: Json
  • terraferm/Ansible
    • それぞれの定義内にアクセスキー/シークレットキーを記述して使うことができますが、githubにあげるときは.gitignoreの対象にしておくようにしましょう。
    • もしくは環境変数にセットしておいて、それを読み込むことも可能です。
[terraform内での定義] provider "aws" { access_key = "AKIAZZZZZZZZWWWWWWWW" secret_key = "aaaabbbb+ccccddddeeeeffffgggg/hhhh" region = "ap-northeast-1" }
[環境変数にセット] export AWS_ACCESS_KEY_ID=AKIAZZZZZZZZWWWWWWWW export AWS_SECRET_ACCESS_KEY=aaaabbbb+ccccddddeeeeffffgggg/hhhh

(おまけ)認証情報の管理をdirenvでやると人生が楽しくなる

  • direnv っていう便利ツールがあります。
  • これを使うと、ディレクトリごとに環境変数を設定できるようになります。
  • terraform/Ansibleを使うときにプロジェクトごとに使用するアクセスキー/シークレットキーを変えたりすることができます。