AWSアクセスキー管理を強化する:aws-vaultの概要と使い方ガイド
AWSのセキュリティを考える上で、クレデンシャル(アクセスキー等)の取り扱いは慎重に行わなければなりません。
私は過去に、アクセスキーをGitHubに誤ってプッシュしてしまうというセキュリティ事故を目の前で見たことがあり、それ以来アクセスキーを払い出して良いかの判断をかなり慎重に行うようになりました。
しかし、運用上どうしてもアクセスキーが必要になってしまうこともあります。
そこで今回は、クレデンシャルを安全にかつ簡単に管理するためのツールとして「aws-vault」を紹介します。
目次
はじめに
こんにちは。
クラウドソリューション第二グループのwatanabe.tです。
AWSのクレデンシャル管理はセキュリティ上、非常に重要な課題です。特に複数のプロファイルを扱う場合、またMFA(多要素認証)を導入している場合、クレデンシャルの管理は複雑になりがちです。
本記事では、これらの課題を解決するための強力なツール「aws-vault」について解説します。
aws-vaultは、AWSのクレデンシャルをOSのキーストアに保存し、簡単に利用できるようにするためのツールです。この記事では、aws-vaultの概要から導入方法、基本的な使い方までを説明していきます。
GitHub – 99designs/aws-vault: A vault for securely storing and accessing AWS credentials in development environments
aws-vaultとは?
aws-vaultの概要
aws-vaultは、AWSのクレデンシャルをセキュアに保存し、利用するためのOSSコマンドラインツールです。
特に、AWSの認証情報を安全に管理し、MFA対応を容易にするために設計されています。
通常、AWS CLIを利用する際、クレデンシャル情報は $HOME/.aws/credentials などにローカルファイルに平文で保存されてしまうため、誤ってファイルをプッシュしてしまったり、マルウェアに不正アクセスされ内容が窃取されることが起こりえます。
aws-vaultはこれを避けるために、クレデンシャルをOSのセキュリティキーチェーンや専用の暗号化ストレージに保存します。
aws-vaultの主な機能
- クレデンシャルの安全な保存aws-vaultは、AWSクレデンシャルをセキュリティキーチェーンや暗号化ストレージに保存し、平文での保存を避けることでセキュリティを強化します。
- MFA対応aws-vaultはMFAに対応しており、AWSセッションの開始時に自動的にMFAコードを生成・入力することができます。これにより、セキュリティを維持しつつ、利便性を向上させます。
- プロファイル管理と利便性複数のAWSプロファイルを簡単に切り替えながら使用できるため、異なるプロジェクトや環境での作業がスムーズに行えます。
aws-vaultの導入方法
前提条件
本手順を進めるにあたり、以下は実施済みの前提となります。必要に応じて公式ページ等を参考に実施してください。
- AWSアカウントが作成済であること(参考 : AWS アカウント作成の流れ | AWS )
- IAMのアクセスキー発行済みであること
- AWS CLIがインストール済みであること
aws-vaultのインストール
aws-vaultは各種パッケージマネージャから提供されているため、 公式サイト を参考にインストールを実施してください。
私はWindowsに Chocolatey を導入済みのため、こちらでインストールしました。
aws-vaultの基本的な使い方
クレデンシャルの設定方法
aws-vaultを使用するには、まずAWSクレデンシャルを設定する必要があります。以下のコマンドを実行して、プロファイルを登録します。
aws-vault add <プロファイル名>
このコマンドを実行するとプロンプトが表示され、AWSアクセスキーとシークレットキーの入力を求められます。
このとき入力されたクレデンシャルは「資格情報マネージャー」などのセキュリティキーチェーンに保管され、 .aws 配下には保存されません。
MFAの設定方法
また、 aws-vault はMFAにも対応しており、MFAの利用を強制することで、AWSセッションの安全性をさらに高めることができます。
以下のように .aws/config にプロファイルを記載することで、コマンドの実行時にMFAコードの確認プロンプトが表示されるようになります。
[default]
region = ap-northeast-1
[profile jonsmith]
mfa_serial = arn:aws:iam::111111111111:mfa/jonsmith
AWS CLIでの使用方法
aws-vaultを使用してAWS CLIを利用するには、 aws-vault exec コマンドを利用して、一時的なセッションを作成します。
aws-vault exec <プロファイル名> -- aws s3 ls
これで指定したプロファイルでセッションを作成し、その権限でS3バケットの一覧を表示します。(MFA設定済みで未認証の場合、このタイミングで認証プロンプトが表示されます)
必要な権限など
aws-vaultを利用するためには、以下のIAMポリシーが必要になります。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Id00",
"Effect": "Allow",
"Action": "iam:GetUser",
"Resource": "arn:aws:iam::111111111111:user/jonsmith"
},
{
"Sid": "Id01",
"Effect": "Allow",
"Action": "sts:GetFederationToken",
"Resource": "*"
}
]
}
これらは、一時的なセッションを作成するために必要な権限ですね。
おわりに
今回は、意外と知られていないaws-vaultの概要と使い方を見てきました。ライトによりセキュアなAWSクレデンシャル管理を行いたいと考えるのであれば、aws-vaultはかなり使いやすいのではないでしょうか。
もし、よりセキュアに、より強力に制限を課したいのであれば、AWS IAM Identity Center (旧 AWS SSO) などを利用してセキュリティを向上させることを検討した方が良いでしょう。
この記事が少しでも役に立てば幸いです。