EC2 インスタンスの IAM ロール関連付けを確認

AWS API を利用する EC2 ワークロードには、インスタンスプロファイルを通じて最小権限のロールを関連付けます。

説明

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 権限も確認してください。

参考資料