タグ付けされた Amazon Machine Images (AMI) からのみ Amazon Elastic Compute Cloud (Amazon EC2) のインスタンスを起動できるように、ユーザーのアクセスを制限したいです。AMI タグを使用して EC2 インスタンスを起動するためのアクセスを制限する方法を教えてください。

タグ付けされた AMI を使用して EC2 インスタンスを起動するユーザーのアクセスを制限するには、既存のインスタンスから AMI を作成するか、既存の AMI を使用してからその AMI にタグをに追加します。そして、タグ付けされた AMI を使用するインスタンスのみを起動するように、ユーザーのアクセス許可を制限するタグ条件付きのカスタム IAM ポリシーを作成します。

この IAM ポリシーの例では、3 つのステートメント ID (Sid) があります。

  • Sid ReadOnlyAccess では、ユーザーは Describe * を使用して、アカウント内の EC2 リソースを表示できます。リソースには、Describe で始まるすべての EC2 アクションが含まれます。Sid ReadOnlyAccess により、ユーザーは EC2 インスタンスのコンソール出力とスクリーンショットを取得することもできます。詳細については、GetConsoleOutput および GetConsoleScreenshot を参照してください。CloudWatch の DescribeAlarms および GetMetricStatistics へのアクセス許可により、EC2 インスタンスの基本的なヘルスに関する情報を Amazon EC2 コンソールに表示できます。EC2 インスタンスを起動すると、ListInstanceProfiles への IAM のアクセス許可により、既存のインスタンスプロファイルが、[インスタンスの詳細の設定] ページの IAM ロールのリストに表示されます。ただし、ListInstanceProfiles API では、ユーザーは IAM ロールを EC2 インスタンスにアタッチすることはできません。
  • Sid ActionsRequiredtoRunInstancesInVPC では、リソースごとに ARN を指定することにより、リソースレベルの権限を使用して us-east-1 のインスタンス、キーペア、セキュリティグループ、ボリューム、ネットワークインターフェイス、またはサブネットを使用して、ユーザーに RunInstances API を実行する権限を付与します。
  • Sid LaunchingEC2withAMIsAndTags では、環境タグが [Prod] に設定され、インスタンスが us-east-1 にある場合に、ユーザーは AMI を使用して EC2 インスタンスを起動できます。リソースレベルのアクセス許可は、us-east-1 にある AMI の ARN に設定されており、条件は EC2:ResourceTag/Environment タグキーとキー値 [Prod] の値と一致します。

このポリシーでは、ユーザーは EC2 インスタンスを起動するときにロールを表示することはできますが、iam:PassRole 権限を持っていない限り、ロールをつけたインスタンスを起動することはできません。このポリシーでは、ユーザーが新しいセキュリティグループを作成することはできません。ユーザーは、EC2:CreateSecurityGroup 権限を持っていない限り、既存のセキュリティグループを選択して EC2 インスタンスを起動する必要があります。EC2:CreateSecurityGroup はセキュリティグループのみ作成するためのアクセスを許可します。このアクションはいずれのルールも追加または変更しません。インバウンドルールを追加するには、ユーザーにインバウンドのEC2:AuthorizeSecurityGroupIngress API アクションを使用する権限とアウトバウンドのEC2:AuthorizeSecurityGroupEgress API アクションを使用する権限が必要です。

次の IAM ポリシーは、RunInstances のアクションに必要なリソースに対してリソースレベルのアクセス許可を使用します。RunInstances に必要なリソースの詳細については、RunInstances に関するリソースレベルのアクセス許可を参照してください。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "ReadOnlyAccess",
            "Effect": "Allow",
            "Action": [
                "ec2:Describe*",
                "ec2:GetConsole*",
                "cloudwatch:DescribeAlarms",
                "cloudwatch:GetMetricStatistics",
                "iam:ListInstanceProfiles"
            ],
            "Resource": "*"
        },
        {
            "Sid": "ActionsRequiredtoRunInstancesInVPC",
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": [
                "arn:aws:ec2:us-east-1:AccountId:instance/*",
                "arn:aws:ec2:us-east-1:AccountId:key-pair/*",
                "arn:aws:ec2:us-east-1:AccountId:security-group/*",
                "arn:aws:ec2:us-east-1:AccountId:volume/*",
                "arn:aws:ec2:us-east-1:AccountId:network-interface/*",
                "arn:aws:ec2:us-east-1:AccountId:subnet/*"
            ]
        },
        {
            "Sid": "LaunchingEC2withAMIsAndTags",
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": "arn:aws:ec2:us-east-1::image/ami-*",
            "Condition": {
                "StringEquals": {
                    "ec2:ResourceTag/Environment": "Prod"
                }
            }
        }
    ]
}

このページは役に立ちましたか? はい | いいえ

AWS サポートナレッジセンターに戻る

サポートが必要ですか?AWS サポートセンターをご覧ください。

公開日: 2018 年 5 月 9 日