8.9 建立 IAM 規則並將 IAM 使用者指定給該規則

若要使用 PlateSpin Migrate 將工作負載移轉至 AWS,您的 AWS 帳戶中需要有一個具有適當 IAM 角色以及必要許可權的 AWS 身分和存取管理 (IAM) 使用者,才能執行向 AWS VPC 的移轉。此外,您還需要此使用者的 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 檔案。執行 AWS 角色工具時,將使用 Migrate-Install-folder\PlateSpin Migrate Server\bin\AWSRolesTool 目錄中的預設許可權重新建立 PolicyJSON.txt 檔案。

  1. 以管理員身分登入 PlateSpin Migrate 伺服器主機。

  2. 開啟命令提示並導覽至 AWS 角色工具所在的位置,然後執行以下指令︰

    AWSRoleTool.exe

    附註:如果 Migrate-Install-folder\PlateSpin Migrate Server\bin\AWSRolesTool 目錄中未提供預設規則 (PolicyJSON.txt),該工具將使用 PlateSpin Migrate 建議的預設許可權重新建立 PolicyJSON.txt 檔案。

  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 (建立 IAM 規則)

PlateSpin Migrate 提供了一個預設規則 (PolicyJSON.txt),其中包含 IAM 使用者使用 PlateSpin Migrate 將工作負載移轉至 AWS 所需的最低許可權。如需在預設規則檔案中為 IAM 使用者定義的最低許可權的相關資訊,請參閱節 8.9.3, 定義 IAM 使用者的最低許可權

您可以使用 AWS 管理主控台來建立包含此預設規則中所含建議許可權的新規則。

8.9.3 定義 IAM 使用者的最低許可權

PlateSpin Migrate 提供了一個 PolicyJSON.txt 檔案,其中預設包含 IAM 使用者使用 PlateSpin Migrate 將工作負載移轉至 AWS 所需的最低許可權。使用 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/*"
            ]
        }
    ]
}