8.9 IAMポリシーの作成とポリシーへのIAMユーザの割り当て

PlateSpin Migrateを使用してワークロードをAWSにマイグレートするには、AWS VPCへのマイグレーションを実行するための適切なIAM役割と必要な権限を持つAWS Identity and Access Management (IAM)ユーザが、AWSアカウント内に必要です。このユーザには、AWSアクセスキーとAWSシークレットアクセスキーも必要です。

次のいずれかの方法を使用して、新しいIAMポリシーを作成できます。

8.9.1 AWS役割ツールによる新しいIAMポリシーの作成

PlateSpin MigrateはAWS役割ツール(AWSRoleTool.exe)を提供しており、これにより管理者ユーザは、PlateSpin Migrateが定義するデフォルトポリシー(PolicyJSON.txt)に基づいて新しいIAMポリシーを作成し、IAMユーザ(既存または新規のユーザ)をそのポリシーに割り当てできるようになります。PlateSpin Migrate AWS役割ツール(AWSRoleTool.exe)は、Migrate-Install-folder\PlateSpin Migrate Server\bin\AWSRolesToolディレクトリに含まれています。

デフォルトでは、PlateSpin Migrateが定義するPolicyJSON.txtファイルに、IAMユーザがPlateSpin Migrateを使用してワークロードをAWSにマイグレートするための必要最小限の権限が含まれています。デフォルトポリシーでIAMユーザに対して定義されている最小限の権限については、セクション 8.9.3, IAMユーザに対する最小限の権限の定義を参照してください。

AWS役割ツールを使用して新しいポリシーを作成する場合、新しいポリシーはこのデフォルトポリシーのレプリカとして作成され、デフォルトポリシーに一覧されているすべての権限を持つことになります。ただし、デフォルトポリシーに一覧されたものではなく、変更された権限で新しいポリシーを作成することもできます。変更された権限で新しいポリシーを作成するには、PolicyJSON.txtファイルを編集することで、新しいポリシーに一覧する権限のみをリストに含むようにして、その後ポリシーを作成します。

メモ:PolicyJSON.txtファイルの編集後、PlateSpin Migrateが定義するデフォルトポリシーに戻す場合には、編集されたPolicyJSON.txtファイルを削除します。PolicyJSON.txtファイルは、AWS役割ツールの実行時に、Migrate-Install-folder\PlateSpin Migrate Server\bin\AWSRolesToolディレクトリにあるデフォルトの権限を使用して再作成されます。

  1. PlateSpin Migrate Serverホストに管理者としてログインします。

  2. コマンドプロンプトを開き、AWS役割ツールの場所に移動し、次のコマンドを実行します。

    AWSRoleTool.exe

    メモ:デフォルトポリシー(PolicyJSON.txt)がMigrate-Install-folder\PlateSpin Migrate Server\bin\AWSRolesToolディレクトリ内に提供されていない場合、PolicyJSON.txtファイルは、PlateSpin Migrateが推奨するデフォルト権限を使用して再作成されます。

  3. IAMポリシーとユーザを作成する権限を持つAWSユーザのAWSアクセスキーとAWSシークレットアクセスキーを入力します。

  4. 作成するAWSポリシーの名前を入力します。

  5. このポリシーの割り当て先となる新規または既存のユーザの名前を入力します。ツールによって、新しいポリシーがPolicyJSON.txtファイルのレプリカとして作成され、このポリシーが指定されたユーザに割り当てられ、そのユーザのアクセスキーとシークレットキーの資格情報が設定されます。

  6. 資格情報はファイルに保存することも、コマンドプロンプトに表示することもできます。

    • 資格情報をファイルに保存するには、「y」と入力します。 資格情報を含むファイルのパスが表示されます。

    • 資格情報をコマンドプロンプトに表示するには、「n」と入力して、表示された資格情報をメモします。

  7. (オプション) PlateSpin Migrateが定義するデフォルトポリシーに戻すには、編集済みのPolicyJSON.txtファイルを削除し、AWS役割ツールを実行して、デフォルト権限によってPolicyJSON.txtファイルを再作成します。

8.9.2 AWS管理コンソールによるIAMポリシーの作成

AWS管理コンソールを使用してIAMポリシーを作成または編集し、そのポリシーにユーザを割り当てることでユーザ権限を定義できます。詳細については、Creating IAM Policiesを参照してください。

PlateSpin Migrateでは、IAMユーザがPlateSpin Migrateを使用してワークロードをAWSにマイグレートするための必要最小限の権限を含むデフォルトポリシー(PolicyJSON.txt)を提供しています。デフォルトポリシーファイルでIAMユーザに対して定義されている最小限の権限については、セクション 8.9.3, IAMユーザに対する最小限の権限の定義を参照してください。

AWS管理コンソールを使用して、このデフォルトポリシーに含まれる推奨権限による新しいポリシーを作成できます。

8.9.3 IAMユーザに対する最小限の権限の定義

PlateSpin Migrateでは、IAMユーザがPlateSpin Migrateを使用してワークロードをAWSにマイグレートするための必要最小限の権限をデフォルトで含んでいるPolicyJSON.txtファイルを提供しています。AWS役割ツールを使用して新しいポリシーを作成する場合、新しいポリシーはこのデフォルトポリシーのレプリカとして作成され、デフォルトポリシーに一覧されているすべての権限を持つことになります。

PolicyJSON.txtファイルの内容は次のとおりです。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "ec2:TerminateInstances",
                "ec2:DeleteTags",
                "ec2:StartInstances",
                "ec2:CreateTags",
                "kms:DescribeKey",
                "ec2:RunInstances",
                "ec2:StopInstances"
            ],
            "Resource": [
                "arn:aws:kms:*:*:key/*",
                "arn:aws:ec2:*:*:subnet/*",
                "arn:aws:ec2:*:*:instance/*",
                "arn:aws:ec2:*:*:volume/*",
                "arn:aws:ec2:*:*:security-group/*",
                "arn:aws:ec2:*:*:network-interface/*",
                "arn:aws:ec2:*::image/*"
            ]
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "ec2:DeregisterImage",
                "ec2:DeleteSnapshot",
                "ec2:DescribeInstances",
                "ec2:CreateImage",
                "ec2:DescribeSnapshots",
                "ec2:DescribePlacementGroups",
                "ec2:DescribeSecurityGroups",
                "pricing:GetProducts",
                "ec2:DescribeImages",
                "ec2:DescribeAvailabilityZones",
                "ec2:DescribeVpcs",
                "ec2:DescribeVolumes",
                "kms:ListAliases",
                "ec2:DescribeAccountAttributes",
                "ec2:DescribeReservedInstances",
                "ec2:ModifyInstanceAttribute",
                "ec2:DescribeSubnets",
                "ec2:DescribeKeyPairs",
                "ec2:DescribeInstanceStatus"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor2",
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "kms:Encrypt",
                "ec2:CreateVolume"
            ],
            "Resource": [
                "arn:aws:ec2:*:*:volume/*",
                "arn:aws:kms:*:*:key/*"
            ]
        },
        {
            "Sid": "VisualEditor3",
            "Effect": "Allow",
            "Action": [
                "ec2:AttachVolume",
                "kms:CreateGrant"
            ],
            "Resource": [
                "arn:aws:ec2:*:*:instance/*",
                "arn:aws:ec2:*:*:volume/*",
                "arn:aws:kms:*:*:key/*"
            ]
        },
        {
            "Sid": "VisualEditor4",
            "Effect": "Allow",
            "Action": "ec2:DetachVolume",
            "Resource": [
                "arn:aws:ec2:*:*:instance/*",
                "arn:aws:ec2:*:*:volume/*"
            ]
        },
        {
            "Sid": "VisualEditor5",
            "Effect": "Allow",
            "Action": "ec2:DeleteVolume",
            "Resource": "arn:aws:ec2:*:*:volume/*"
        },
        {
            "Sid": "VisualEditor6",
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": [
                "arn:aws:ec2:*:*:subnet/*",
                "arn:aws:ec2:*:*:key-pair/*",
                "arn:aws:ec2:*:*:instance/*",
                "arn:aws:ec2:*::snapshot/*",
                "arn:aws:ec2:*:*:launch-template/*",
                "arn:aws:ec2:*:*:volume/*",
                "arn:aws:ec2:*:*:security-group/*",
                "arn:aws:ec2:*:*:placement-group/*",
                "arn:aws:ec2:*:*:network-interface/*",
                "arn:aws:ec2:*::image/*"
            ]
        }
    ]
}