みなさんこんにちは。サーバの構築業務を担当している川合です。
少し間隔が空きましたが、今回はAWSに関する記事になります。
AWS環境外のサーバから、AWS CLIでEC2のスナップショットを取得するスクリプトを作成中です。
今回の記事は、その際に1台のサーバで複数のawsアカウントに対してスクリプトを実行するために
認証情報をアカウント分管理できないかと思い、調べた内容についての記事になります。
一旦はこの方法で管理することができましたが、あまりサーバ内に複数の認証情報を管理したくないのでスイッチロールなどの別の方法で実装する予定です。
概要
サーバに複数のAWSの認証情報を設置する方法について解説したいと思います。
利用する環境は、CentOS 7系でAWS環境外のサーバになります。
サーバは、AWS CLIが導入済みでコマンドが実行できる状態です。
AWS CLIの導入方法については割愛しています。
設定方法
aws configure を実行することでAWSアカウントの認証情報を登録することができます。
何もオプションを指定せずに登録すると1つしか認証情報を管理することができません。
ですが、オプションを指定することで複数の認証情報を管理することが可能になります。
実行するコマンド
aws configure --profile プロファイル名
--profile オプションを指定して、任意の名前を付ける事でプロファイル名ごとに認証情報を管理することができます。
config ファイル
----------------
[profile test1]
[profile test2]
----------------
credentials ファイル
----------------------------------------------------------------------------------
[test1]
aws_access_key_id = xxxxxxxxxxxxxxxxxxxx
aws_secret_access_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
[test2]
aws_access_key_id = yyyyyyyyyyyyyyyyyyyy
aws_secret_access_key = yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
----------------------------------------------------------------------------------
同じ管理ファイルが作成されますが、config ファイルにはprofile情報が記載されています。
credentials ファイルには対応するprofile毎に認証情報が記載されています。
あとは、aws コマンドを実行する際にオプションで--profile プロファイル名 を指定することで
対象の認証情報が読み込まれてコマンドを実行することができるようになります。
例
aws --region ap-northeast-1 --profile test1 ec2 describe-instance-status
まとめ
オプションを指定することで複数の認証情報を登録することができ、コマンド実行の際に
プロファイル情報を読み込むことでコマンドが実行できるようになりました。
ですが、サーバに複数の認証情報が設置されているのでセキュリティ的にはよくないと思います。
本来であれば、IAMロールを適用してサーバ上で認証情報を管理しないことが推奨されています。
冒頭にも記載している通り、管理するアカウントは1つにしてそこからロールの切り替えなどで
サーバ上に保存する認証情報を少なくできればと思います。
プロフィール
サーバ構築周り全般を対応しております。
LINK
クラウドベリージャム:プロフィールページ