説明
AWS API を呼び出す EC2 アプリケーションでは、サーバーに長期キーを保存するより、ロールの一時的な認証情報を使う方が管理しやすくなります。CloudFormation の IamInstanceProfile は、ロールを含むインスタンスプロファイルを関連付けます。AWS API へのアクセスが不要なインスタンスに、不要な権限を与える必要はありません。
想定される影響
必要な認証情報を取得できないと、API 呼び出しが失敗したり、アプリケーションが長期キーに依存したりする場合があります。保存したキーが漏えいすると、その権限を悪用されるおそれがあります。
対処方法
EC2 の信頼ポリシーと必要最小限の権限を持つロールを作り、インスタンスプロファイルで関連付けてください。アプリケーションがロールの認証情報を使うことを確認してから、不要な長期キーを削除し、失効させてください。
例
AMI ID は、実際のリージョンで承認されたイメージに置き換えてください。AppRole は EC2 の信頼ポリシーと必要な権限を持つ別のロール宣言を参照します。ロール定義は省略しています。
変更前
yaml
Resources:
AppServer:
Type: AWS::EC2::Instance
Properties:
InstanceType: t3.micro
ImageId: ami-1234567890abcdef0
インスタンスプロファイルを関連付けていない構成です。
変更後
yaml
Resources:
AppServer:
Type: AWS::EC2::Instance
Properties:
InstanceType: t3.micro
ImageId: ami-1234567890abcdef0
IamInstanceProfile: !Ref AppInstanceProfile
AppInstanceProfile:
Type: AWS::IAM::InstanceProfile
Properties:
Roles:
- !Ref AppRole
プロファイルを通じてロールを関連付けています。アプリケーションの認証情報の取得元と実際の API 権限も確認してください。