长沙企业网站建设优度,wordpress自动发文章工具,正规的大宗商品交易平台,在线h5制作工具文章目录 实验概览目标实验环境任务 1#xff1a;探索并启动实验环境任务 1.1#xff1a;探索 Amazon VPC 资源任务 1.2#xff1a;探索 Amazon EC2 资源任务 1.3#xff1a;创建 Amazon VPC 终端节点任务 1.4#xff1a;连接私有 EC2 实例任务 1.5#xff1a;探索 Amazo… 文章目录 实验概览目标实验环境任务 1探索并启动实验环境任务 1.1探索 Amazon VPC 资源任务 1.2探索 Amazon EC2 资源任务 1.3创建 Amazon VPC 终端节点任务 1.4连接私有 EC2 实例任务 1.5探索 Amazon S3 资源 任务 2通过 Amazon EC2 实例与 Amazon S3 交互任务 3为 Amazon S3 创建 VPC 终端节点任务 4通过私有实例与 Amazon S3 交互添加 VPC 终端节点策略解决方案控制台步骤AWS CLI 步骤 总结 实验概览
数据安全至关重要。Amazon Web Services (AWS) 提供了多种解决方案和最佳实践来帮助保护数据的安全。了解如何做出最佳决策来保护数据的安全这项任务可能具有挑战性。在无路由指向互联网的私有子网中运行应用程序可将攻击面限制为仅限内部流量从而实现数据安全。该策略是一项很好的安全措施。但是当应用程序必须从 Amazon Simple Storage Service (Amazon S3) 等服务访问数据时可能会出现问题。 为了解决此类问题AWS 提供了 Amazon Virtual Private Cloud (Amazon VPC) 终端节点。使用 VPC 终端节点您可以通过私密方式将 VPC 连接到受支持的 AWS 服务。**这种私密连接无需互联网网关、NAT 网关、VPN 连接或 AWS Direct Connect 连接即可实现。**通过 VPC 终端节点进行通信时不需要使用 VPC 中的资源即可获取公有 IP 地址。这样通过 VPC 终端节点的流量就能保持在 Amazon 网络内。 在本实验中将创建 VPC 终端节点。然后将使用这些终端节点从位于私有子网的 Amazon Elastic Compute Cloud (Amazon EC2) 实例访问 Amazon S3。要进一步提高数据安全性可以创建 VPC 终端节点策略仅限特定资源使用终端节点。 目标
完成本实验后将能够
了解私有子网和公有子网了解它们为何能够或不能与 Amazon S3 通信。使用 AWS 管理控制台和 AWS Command Line Interface (AWS CLI) 配置 VPC 终端节点。通过私有子网中的 VPC 终端节点与 Amazon S3 交互。创建 VPC 终端节点策略以限制对资源的访问 实验环境
在本实验中已创建包含公有子网和私有子网的 VPC。私有子网路由表不包括 NAT 网关或互联网网关。因此在私有子网中启动的资源无法与公共互联网或任何通过公共互联网传输数据的 AWS 服务进行通信。
本实验将演示 VPC 终端节点的工作原理。为此已在公有子网中启动了 EC2 实例并在私有子网中启动了相同的 EC2 实例。VPC 终端节点允许来自私有 EC2 实例的流量访问需要公有路由的 AWS 服务。为了验证这一结果本实验已经创建了一个 Amazon S3 存储桶其中包含一个演示文件。
下图显示了为本实验预置的所有资源
任务 1探索并启动实验环境
在此任务中将查看预置的实验资源。这些资源包括 VPC、子网、Amazon S3 存储桶和 Amazon EC2 实例。还可以创建 VPC 终端节点以允许 AWS Systems Manager Session Manager 访问实例。
下图显示了为本实验任务预置的所有资源以及这些资源的连接方式 任务 1.1探索 Amazon VPC 资源
查看VPC——labVPC 查看labVPC中所创建的子网 公有子网PublicSubnetA配置了互联网关可以向外通信。 私有子网PrivateSubnetA没有配置互联网关不能向外通信。 查看路由表PublicRouteTable子网关联情况 查看路由表PrivateRouteTable子网关联情况 任务 1.2探索 Amazon EC2 资源
通过控制台导航至EC2控制面板查看云实例。 查看云实例 查看云主机所使用的HTTPS-SSM-ENDPOINT安全组。 该实例为公有网络中的云主机实例使用 Session Manager 可以直接连接到实例。 通过会话管理器可以连接到该云主机实例。
ls接下来当使用同样的方式进行云主机实例登录。发现登录不了。
此时将显示一条错误消息We werent able to connect to your instance.。这时要使用 Session Manager 连接实例可以创建接口终端节点。 可以将 Systems Manager 配置为使用接口 virtual private cloud (VPC) 终端节点进一步改善托管节点的安全态势。AWS PrivateLink 将托管节点、Systems Manager 和 Amazon EC2 之间的所有网络流量限定为 Amazon 网络。这一限制让您无需在私有 EC2 实例上进行任何出站互联网访问。
任务 1.3创建 Amazon VPC 终端节点
创建一个 Session Manager 终端节点以便能够在不使用互联网网关或 NAT 网关的情况下连接到私有 EC2 实例。 终端节点配置 在 Name tag - optional名称标签 – 可选框内输入SSM Endpoint 。在 Service Name服务名称筛选框中输入ssm 并按 Enter 键。选择 com.amazonaws.REGION.ssm其中 REGION 是您从中启动实验的区域。对于 VPC从下拉菜单中选择 labVPC。 待终端节点状态变成可用状态就可以访问使用。 任务 1.4连接私有 EC2 实例
选择连接 PrivateCommandHost云实例。 选择 *Connect*连接按钮。系统会打开一个新的浏览器标签页。现在已使用一个实例终端节点连接到了私有子网中的实例。 成功连接。 任务 1.5探索 Amazon S3 资源
查看存储桶。 任务 2通过 Amazon EC2 实例与 Amazon S3 交互
连接到公有实例和私有实例并尝试在不使用 Amazon S3 VPC 端点的情况下从每个实例访问 Amazon S3 存储桶中的文件。
如下图所示能够从公有实例而非私有实例访问 S3 存储桶
命令要访问主目录请运行以下命令
cd ~命令为了帮助区分 AWS CLI 中的命令和输出请运行以下命令。此命令将在屏幕上显示的任何输出之前添加一个空行
trap printf \n DEBUG还可以通过导出 PS1 变量来更改命令提示符使输出更易于阅读。 命令要执行此操作请运行以下命令
export PS1\n[\u\h \W] $ 命令要配置 AWS CLI请运行以下命令
aws configure命令出现提示时配置以下各项 AWS Access Key ID [None]AWS 访问密钥 ID [无]按 Enter 键AWS Secret Access Key [None]AWS 秘密访问密钥[无]按 Enter 键Default region name [None]默认区域名称 [无]复制并粘贴 Region区域值Default output format [None]默认输出格式 [无]json 可选注意如果收到内容为 Partial credentials found in shared-credentials-file, missing: aws_secret_access_key在 shared-credentials-file 中发现部分凭证缺少aws_secret_access_key的错误消息请运行以下命令删除凭证文件并重新执行 aws configure 命令。否则请继续下一步。
rm ~/.aws/credentials命令列出在账户中有权访问的 S3 存储桶请运行以下命令
aws s3 ls命令要列出 LabBucket 中的所有文件请运行以下命令。将 替换为LabBucket的相应值
aws s3 ls s3://LabBucketlabstack-2848353a-a5d2-4c70-b586-997e2b-labbucket-c72jm1b2ozlq
labstack-2848353a-a5d2-4c70-b586-labloggingbucket-1ctuk4k4ixe1命令要将该文件从 Amazon S3 复制到本地主目录请运行以下命令。将 替换为LabBucket的相应值
aws s3 cp s3://LabBucket/demo.txt ~/labstack-2848353a-a5d2-4c70-b586-997e2b-labbucket-c72jm1b2ozlq命令要将该文件的内容显示到屏幕上请运行以下命令
less demo.txt已能够将文件从 Amazon S3 下载到公有实例。键入q 以退出编辑器。接下来从主目录中修改此文件并将其重新上传到 LabBucket。
命令要向该文件添加文本并将更新后的文件内容显示在屏幕上请运行以下命令
echo
This is some non-unique text that will be appended to your file. demo.txtless demo.txt命令要将更新后的文件重新上传回 Amazon S3请运行以下命令。将 替换为LabBucket的相应值
aws s3 cp demo.txt s3://LabBucket/labstack-2848353a-a5d2-4c70-b586-997e2b-labbucket-c72jm1b2ozlq切换到显示 AWS 管理控制台的浏览器标签页。在存储桶列表中选择与实验页面左侧的 LabBucket 值匹配的存储桶名称。选择 demo.txt 文件的名称。选择 Open打开。该文件将在新的浏览器标签页中打开。已从公有实例成功更新了该文件。注意如果该文件未在浏览器标签页中打开请确保未阻止弹出窗口。
echo $VPC此命令使用 JQ 来处理 JSON 输出并对其采用正确的格式以备日后使用。
命令要查找私有路由表的路由表 ID请运行以下命令
RTB$(aws ec2 describe-route-tables --query RouteTables[*].RouteTableId --filters Nametag:Name, ValuesPrivateRouteTable | jq -r .[0])echo $RTB✨命令✨要创建 Amazon S3 终端节点请运行以下命令
export AWS_REGION$(curl -s 169.254.169.254/latest/dynamic/instance-identity/document | jq -r .region)echo $AWS_REGIONaws ec2 create-vpc-endpoint \--vpc-id $VPC \--service-name com.amazonaws.$AWS_REGION.s3 \--route-table-ids $RTB注意上述命令中加入了反斜线以作为多行命令运行。 Amazon S3 VPC 终端节点现已创建完成。 命令要验证 Amazon S3 VPC 终端节点是否已创建请运行以下命令
aws ec2 describe-vpc-endpoints --query VpcEndpoints[*].ServiceName此时 Amazon S3 终端节点已显示在列表中。 任务 4通过私有实例与 Amazon S3 交互
在此任务中将使用位于私有子网中的实例该实例之前无法访问 Amazon S3。现在已创建 Amazon S3 终端节点并将其与私有子网所关联的路由表关联因此无需使用公共资源即可直接访问 Amazon S3如下图所示 切换到用于连接私有实例的标签页。
要列出在账户中有权访问的 S3 存储桶请运行以下命令
aws s3 ls命令要列出 LabBucket 中的所有文件请运行以下命令。将 替换为LabBucket的相应值
aws s3 ls s3://LabBucketlabstack-2848353a-a5d2-4c70-b586-997e2b-labbucket-c72jm1b2ozlq此命令将显示一个列表其中包含与您之前从控制台看到的 S3 存储桶中的文件相匹配的文件。
命令要显示实例主目录中的文件列表请运行以下命令
cd ~
ls -l请注意此目录中没有本地文件因为之前已将文件从 S3 下载到公有实例现在已连接到私有实例。
命令要将该文件从 Amazon S3 复制到本地主目录请运行以下命令。将 替换为LabBucket的相应值
aws s3 cp s3://LabBucket/demo.txt ~/labstack-2848353a-a5d2-4c70-b586-997e2b-labbucket-c72jm1b2ozlq命令要将该文件的内容显示到屏幕上请运行以下命令
less demo.txt现在有了 Amazon S3 VPC 终端节点就可以从私有实例上的 Amazon S3 中下载文件。 添加 VPC 终端节点策略
借助 VPC 网关终端节点可以指定限制访问权限的策略。使用终端节点策略您可以准确指定允许私有子网中的实例访问哪些 Amazon S3 存储桶。例如策略允许提供对数据存储桶的访问权限但限制对日志记录存储桶的访问。
使用控制台或 AWS CLI 向 Amazon S3 VPC 网关终端节点添加策略以允许访问 labbucket但拒绝访问 labloggingbucket如下图所示 从以下策略模板入手
{Version: 2012-10-17,Statement: [{Effect: Allow,Principal: *,Action: s3:List*,Resource: arn:aws:s3:::*},{Effect: Allow,Principal: *,Action: s3:*,Resource: [arn:aws:s3:::LabBucket,arn:aws:s3:::LabBucket/*]},{Effect: Deny,Principal: *,Action: s3:*,Resource: [arn:aws:s3:::LabLoggingBucket,arn:aws:s3:::LabLoggingBucket/*]}]
}下图显示了为本实验任务预置的所有资源以及这些资源的连接方式 已成功地添加一个 VPC 终端节点策略以限制对 labloggingbucket 的访问。
解决方案
以下步骤概述了如何向 Amazon S3 网关端点添加 VPC 网关端点策略。提供了通过控制台和 AWS CLI 执行此操作的说明。
控制台步骤
在 AWS 管理控制台中使用 AWS 搜索栏搜索VPC 然后从结果列表中选择该服务。
在左侧导航窗格中选择 Endpoints终端节点。
选择 com.amazonaws.REGION.s3 端点。
选择 Policy策略选项卡。
选择 Edit Policy编辑策略。
选择 Custom自定义。
复制以下策略并将其粘贴到文本框中
注意将 和 替换为相应值。
{Version: 2012-10-17,Statement: [{Effect: Allow,Principal: *,Action: s3:List*,Resource: arn:aws:s3:::*},{Effect: Allow,Principal: *,Action: s3:*,Resource: [arn:aws:s3:::LabBucket,arn:aws:s3:::LabBucket/*]},{Effect: Deny,Principal: *,Action: s3:*,Resource: [arn:aws:s3:::LabLoggingBucket,arn:aws:s3:::LabLoggingBucket/*]}]
}选择 *Save*保存。
现在已向 Amazon S3 网关终端节点添加了策略。可以通过运行以下命令从私有实例测试该策略
命令将 和 替换为相应值。
aws s3 ls s3://LabBucket
aws s3 ls s3://LabLoggingBucketAWS CLI 步骤
转到用于连接公有实例的浏览器标签页。
命令要创建策略文档的 JSON 文件请运行以下命令。将 和 替换为相应值
cd ~
cat EOT policy.json
{Version: 2012-10-17,Statement: [{Effect: Allow,Principal: *,Action: s3:List*,Resource: arn:aws:s3:::*},{Effect: Allow,Principal: *,Action: s3:*,Resource: [arn:aws:s3:::LabBucket,arn:aws:s3:::LabBucket/*]},{Effect: Deny,Principal: *,Action: s3:*,Resource: [arn:aws:s3:::LabLoggingBucket,arn:aws:s3:::LabLoggingBucket/*]}]
}
EOT命令要查找 VPC 终端节点 ID请运行以下命令
export vpcEndpointId$(aws ec2 describe-vpc-endpoints --query VpcEndpoints[?contains(ServiceName, s3) true].VpcEndpointId --output text)echo ${vpcEndpointId}命令要将策略附加到 VPC 终端节点请运行以下命令
aws ec2 modify-vpc-endpoint --vpc-endpoint-id ${vpcEndpointId} --policy-document file://policy.json现在已向 Amazon S3 网关终端节点添加了策略。可以通过运行以下命令从私有实例测试该策略
命令将 和 替换为相应值。
aws s3 ls s3://LabBucket
aws s3 ls s3://LabLoggingBucket总结
了解私有子网和公有子网以及它们为何能够或不能与 Amazon S3 通信使用 AWS 管理控制台和 AWS CLI 配置 VPC 端点通过私有子网中的 VPC 端点与 Amazon S3 交互创建限制资源访问的 VPC 端点策略