View a markdown version of this page

虚拟机所需的权限 Import/Export - VM Import/Export

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

虚拟机所需的权限 Import/Export

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

所需的权限

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

重要

VM Import/Export 会验证您是否拥有RoleName参数中指定的角色的iam:PassRole权限,如果未指定,则会验证您是否拥有默认vmimport角色的权限。确保您的 IAM 政策iam:PassRole对您打算使用的角色 ARN 进行授权。有关更多信息,请参阅 IAM 用户指南中的授予用户向 AWS 服务传递角色的权限。

重要提示

某些条件密钥不适用iam:PassRole于 VM Import/Export。由于 VM Import/Export 代表您发出请求,因此未保留初始请求的某些属性。某些密钥(例如aws:SourceVpcaws:SourceVpceaws:VpcSourceIp、和)不可用,可能会导致您的请求失败。有关更多信息,请参阅《IAM 用户指南》中的 AWS 全局条件上下文键。

注意

有些操作需要使用 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": "*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::111122223333:role/vmimport" } ] }

所需的服务角色

虚拟机 Import/Export 需要角色才能代表你执行某些操作。您必须使用允许 VM 代入该角vmimport色的信任关系策略文档创建名 Import/Export 为的服务角色,并且必须为该角色附加 IAM 策略。有关更多信息,请参阅《IAM 用户指南》中的 IAM 角色。

先决条件

必须在计划使用 VM 的任何区域启用 AWS Security Token Service (AWS STS) Import/Export。有关更多信息,请参阅在 AWS 区域 AWS STS 中激活和停用。

若要创建服务角色
  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" } } } ] }
  2. 使用create-role命令创建名为的角色vmimport并授予虚拟机 Import/Export 访问权限。确保您已指定在上一步中创建的 trust-policy.json 文件的位置的完整路径,并包含 file:// 前缀,如下例所示:

    aws iam create-role --role-name vmimport --assume-role-policy-document "file://C:\import\trust-policy.json"
  3. 使用以下策略创建名为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": "*" } ] }
  4. (可选)要从导入使用 AWS KMS 密钥加密的资源 AWS 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)指定为资源,而不是 *。

  5. (可选)如果您想将许可证配置附加到 AMI,请向 role-policy.json 文件添加以下 License Manager 权限。

    { "Effect": "Allow", "Action": [ "license-manager:GetLicenseConfiguration", "license-manager:UpdateLicenseSpecificationsForResource", "license-manager:ListLicenseSpecificationsForResource" ], "Resource": "*" }
  6. 使用下面的 put-role-policy 命令将策略挂载到之前创建的角色。请务必指定 role-policy.json 文件位置的完整路径。

    aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document "file://C:\import\role-policy.json"
  7. 要进行其他安全控制,可以将上下文密钥(例如 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:*" } } } ] }