

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# VM Import/Export 所需的权限
所需的权限

虚拟机 Import/Export 要求您的用户、群组和角色拥有一定的权限。此外，还需要服务角色才能代表您执行某些操作。

**Topics**
+ [

## 所需的权限
](#iam-permissions-image)
+ [

## 所需的服务角色
](#vmimport-role)

## 所需的权限


您的用户、群组和角色需要在其 IAM policy 中拥有以下权限才能使用 VM Import/Export：

**注意**  
有些操作需要使用 Amazon Simple Storage Service（Amazon S3）存储桶。此示例策略不授予创建 S3 存储桶的权限。您使用的用户或角色需要指定一个现有存储桶，或者需要有权使用 `s3:CreateBucket` 操作创建一个新的存储桶。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetBucketLocation",
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-import-bucket",
        "arn:aws:s3:::amzn-s3-demo-import-bucket/*",
        "arn:aws:s3:::amzn-s3-demo-export-bucket",
        "arn:aws:s3:::amzn-s3-demo-export-bucket/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:CancelConversionTask",
        "ec2:CancelExportTask",
        "ec2:CreateImage",
        "ec2:CreateInstanceExportTask",
        "ec2:CreateTags",
        "ec2:DescribeConversionTasks",
        "ec2:DescribeExportTasks",
        "ec2:DescribeExportImageTasks",
        "ec2:DescribeImages",
        "ec2:DescribeInstanceStatus",
        "ec2:DescribeInstances",
        "ec2:DescribeSnapshots",
        "ec2:DescribeTags",
        "ec2:ExportImage",
        "ec2:ImportInstance",
        "ec2:ImportVolume",
        "ec2:StartInstances",
        "ec2:StopInstances",
        "ec2:TerminateInstances",
        "ec2:ImportImage",
        "ec2:ImportSnapshot",
        "ec2:DescribeImportImageTasks",
        "ec2:DescribeImportSnapshotTasks",
        "ec2:CancelImportTask"
      ],
      "Resource": "*"
    }
  ]
}
```

------

## 所需的服务角色


VM Import/Export 需要角色才能代表您执行某些操作。您必须`vmimport`使用允许虚拟机代入该角色的信任关系策略文档创建一个名 Import/Export 为的服务角色，并且必须为该角色附加一个 IAM 策略。有关更多信息，请参阅《IAM 用户指南》**中的 [IAM 角色](https://docs.amazonaws.cn/IAM/latest/UserGuide/roles-toplevel.html)。

**先决条件**  
您必须在计划使用虚拟机导入/导出的任何区域中启用 Amazon Security Token Service (Amazon STS)。有关更多信息，请参阅在[Amazon 区域 Amazon STS 中激活和停用](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html#sts-regions-activate-deactivate)。

**若要创建服务角色**

1. 在您的计算机上创建一个名为 `trust-policy.json` 的文件。将以下策略添加到该文件中：

------
#### [ JSON ]

****  

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
         {
            "Effect": "Allow",
            "Principal": { "Service": "vmie.amazonaws.com" },
            "Action": "sts:AssumeRole",
            "Condition": {
               "StringEquals":{
                  "sts:Externalid": "vmimport"
               }
            }
         }
      ]
   }
   ```

------

1. 使用[https://docs.amazonaws.cn/cli/latest/reference/iam/create-role.html](https://docs.amazonaws.cn/cli/latest/reference/iam/create-role.html)命令创建名为的角色`vmimport`并授予虚拟机 Import/Export 访问该角色的权限。确保您已指定在上一步中创建的 `trust-policy.json` 文件的位置的完整路径，并包含 `file://` 前缀，如下例所示：

   ```
   aws iam create-role --role-name vmimport --assume-role-policy-document "file://C:\import\trust-policy.json"
   ```

1. 使用以下策略创建一个名为`role-policy.json`的文件，其中*amzn-s3-demo-import-bucket*是用于存放导入磁盘映像的存储桶，*amzn-s3-demo-export-bucket*也是用于存放导出的磁盘映像的存储桶：

------
#### [ JSON ]

****  

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
         {
            "Effect": "Allow",
            "Action": [
               "s3:GetBucketLocation",
               "s3:GetObject",
               "s3:ListBucket" 
            ],
            "Resource": [
               "arn:aws:s3:::amzn-s3-demo-import-bucket",
               "arn:aws:s3:::amzn-s3-demo-import-bucket/*"
            ]
         },
         {
            "Effect": "Allow",
            "Action": [
               "s3:GetBucketLocation",
               "s3:GetObject",
               "s3:ListBucket",
               "s3:PutObject",
               "s3:GetBucketAcl"
            ],
            "Resource": [
               "arn:aws:s3:::amzn-s3-demo-export-bucket",
               "arn:aws:s3:::amzn-s3-demo-export-bucket/*"
            ]
         },
         {
            "Effect": "Allow",
            "Action": [
               "ec2:ModifySnapshotAttribute",
               "ec2:CopySnapshot",
               "ec2:RegisterImage",
               "ec2:Describe*"
            ],
            "Resource": "*"
         }
      ]
   }
   ```

------

1. （可选）要导入使用 Amazon KMS 密钥加密的资源 Amazon Key Management Service，请向`role-policy.json`文件添加以下权限。

   ```
   {
     "Effect": "Allow",
     "Action": [
       "kms:CreateGrant",
       "kms:Decrypt",
       "kms:DescribeKey",
       "kms:Encrypt",
       "kms:GenerateDataKey*",
       "kms:ReEncrypt*"
     ],
     "Resource": "*"
   }
   ```

   如果您使用 Amazon EBS 提供的默认密钥以外的 KMS 密钥，则如果您默认启用 Amazon EBS 加密或在导入操作中启用加密，则必须向 KMS 密钥授予虚拟机 Import/Export 权限。您可以将 KMS 密钥的 Amazon 资源名称（ARN）指定为资源，而不是 \$1。

1. （可选）如果您想将许可证配置附加到 AMI，请向 `role-policy.json` 文件添加以下 License Manager 权限。

   ```
   {
     "Effect": "Allow",
     "Action": [
       "license-manager:GetLicenseConfiguration",
       "license-manager:UpdateLicenseSpecificationsForResource",
       "license-manager:ListLicenseSpecificationsForResource"
     ],
     "Resource": "*"
   }
   ```

1. 使用下面的 [https://docs.amazonaws.cn/cli/latest/reference/iam/put-role-policy.html](https://docs.amazonaws.cn/cli/latest/reference/iam/put-role-policy.html) 命令将策略挂载到之前创建的角色。请务必指定 `role-policy.json` 文件位置的完整路径。

   ```
   aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document "file://C:\import\role-policy.json"
   ```

1. 要进行其他安全控制，可以将上下文密钥（例如 `aws:SourceAccount` 和 `aws:SourceArn`）添加到此新创建角色的信任策略中。VM Import/Export 将按以下示例中指定的方式发布`SourceAccount`和`SourceArn`密钥来代入此角色：

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "vmie.amazonaws.com"
               },
               "Action": "sts:AssumeRole",
               "Condition": {
                   "StringEquals": {
                       "sts:Externalid": "vmimport",
                       "aws:SourceAccount": "111122223333"
                   },
                   "ArnLike": {
                       "aws:SourceArn": "arn:aws:vmie:*:111122223333:*"
                   }
               }
           }
       ]
   }
   ```

------