AWSのcredentialsを注意して取り扱う話


はじめに

最近ではオンプレミスでサーバを自前で用意する他に、クラウドサーバを使う機会が増えているかと思います。
弊社では、Amazon Web Services (AWS)を利用しており、多くの処理をAWS上で行っています。

AWSを利用していくにあたっては、アクセス情報(credentials)を注意して取り扱う必要があります。
ここでは、そんなAWSのcredentials (Access Key IDとSecret Access Key) の呼び出し方についてまとめます。

優先順位は以下のようになります。

  1. 環境変数に設定する
  2. 設定ファイル ($HOME/.aws/credentials)にもたせておく
  3. 各言語のSDKを使って、コードに直接もたせる

他にもいくつか設定方法はあるみたいですが、上記3つが使う機会の多い方法だと思うので絞って説明します。

環境変数に設定する

これはそのまんまですね。.bashrcなどに設定としてもたせます。

このように設定して、コード中で環境変数から展開してしまいましょう。

設定ファイル ($HOME/.aws/credentials)にもたせておく

これはAWSのコマンドラインインターフェイス(CLI)を使います。
CLI自体の導入は解説が多いので割愛しますが、設定は以下のようになります。

上の設定を見て分かると思いますが、この方法では複数の設定を記述できます。
複数の設定を保持しているならば、CLIで実行する場合、以下のように設定を指定して使い分けることができます。

コマンドラインから操作する場合は便利だと思います。

各言語のSDKを使って、コードに直接もたせる

直接コードの中に書いてしまう方法です。
セキュリティ的にはあまり良いとは言えないので、うまいこと外部のファイルから読み込ませるようにしましょう。

下記のサンプルはRubyでの書き方です。

このように書けますが、上記 2.でcredentialsを設定してしまえばコード中にaccess_key_idとsecret_access_keyをもたせる必要はなくなります。
gitなどでコードを公開する場合は、上手く組み合わせてcredentialsを見えないようにしておく必要があります。

まとめ

クラウドサーバは非常に便利ですが、その分接続情報などの取り扱いには気をつけないといけませんね。


DACエンジニア採用情報

  関連記事

no image
AnsibleでJunosのバージョン情報を取得

インフラ開発部 松田です。 今回は弊社で検証中のAnsibleについて書きます。 Ansibleを使ったサーバ構築の記事は最近よく見かけますが、私が触る機会の多いネットワーク機器も操作できる(Ansibleはエージェントレス)ということで、Ansible+NW機器について色々書いていきます。 初回は …

GoogleCloudPlatform
GCP上でCoreOSクラスタを作ってコンテナ起動をしてみた

Google Cloud Platform(GCP)上でCoreOS + etcd +  fleet + docker でコンテナ起動まで行ったので紹介したいと思います。 CoreOSの起動 CoreOSは、コンテナの実行環境を構築することに特化したLinuxディストリビューションです。 なお、この …