AWS::IAM::InstanceProfileの理解
AWS::EC2::Instance
を立ち上げるときに指定できるIamInstanceProfileがよく分からなかった。
- セキュリティグループやネットワークACLでアクセス制御できるのに...
- EC2インスタンスからS3へアップロードするとしても、Webアプリケーション内でAWSのユーザ(アクセスキーID、シークレットアクセスキー)を指定すればできるのに...
こんな感じ?不安だけど、今んところの理解を次にまとめてみた。
そもそもAWSのユーザができることは「AWSを操作するAPIをたたくこと」
起動したEC2インスタンスの中に入っていろんな操作はできない。RDSで起動したMySQLの操作は「MySQLクライアント」から行う。
ロールとプロファイルについて
- S3のバケット一覧が参照できるよ、S3へアップロードできるよという権限の集まり
- ユーザにロールをつけておけば、その権限で許可されている操作ができる
- プロファイルは複数のロールをまとめたもの
- 例:Webアプリケーションサーバ用のプロファイル
- S3が使えるロール
- CloudSearchが操作できるロール
- 例:Webアプリケーションサーバ用のプロファイル
結局、プロファイルをEC2インスタンスにつけると何が良いのか
そもそもユーザは退職などでカジュアルに削除することがあるので、アクセスキーIDとシークレットアクセスキーをソースコードにハードコーディングするのは危険。動かなくなる恐れがある。
あと、あまりユーザに直接ロールをつけたりしない。ユーザをグループでまとめ、グループに対してロールをつけるとよい。