2011年,亚马逊宣布推出针对CloudFront的AWS身份和访问管理(IAM)支持。 IAM于2010年推出,包括S3支持。 AWS身份和访问管理(IAM)使您可以在AWS账户中拥有多个用户。如果您使用过Amazon Web Services(AWS),则您知道在AWS中管理内容的唯一方法是提供您的用户名和密码或访问密钥。这对我们大多数人来说是一个真正的安全问题。 IAM消除了共享密码和访问密钥的需要。
当员工离开我们的团队时,不断更改我们的主要AWS密码或生成新密钥只是一个混乱的解决方案。 AWS身份和访问管理(IAM)是一个良好的开端,允许具有单独密钥的个人用户帐户。但是,我们是S3 / CloudFront用户,因此我们一直在关注将CloudFront添加到最终发生的IAM中。
我发现这项服务的文档有点分散。有一些第三方产品为身份和访问管理(IAM)提供了一系列支持。但开发人员通常很节俭,所以我寻求一个免费的解决方案来管理IAM与我们的Amazon S3服务。
本文将介绍设置支持IAM的命令行界面以及设置具有S3访问权限的组/用户的过程。在开始配置身份和访问管理(IAM)之前,您需要设置Amazon AWS S3帐户。我的文章“使用Amazon Simple Storage Service(S3)”将引导您完成设置AWS S3帐户的过程。
以下是在IAM中设置和实现用户所涉及的步骤。这是为Windows编写的,但您可以调整以在Linux,UNIX和/或Mac OSX中使用。
- 安装和配置命令行界面(CLI)
- 创建一个组
- 授予对S3 Bucket和CloudFront的组访问权限
- 创建用户并添加到组
- 创建登录配置文件和创建密钥
- 测试访问
安装和配置命令行界面(CLI)
IAM命令行工具包是Amazon的AWS开发人员工具中提供的Java程序。该工具允许您从shell实用程序(DOS for Windows)执行IAM API命令。
- 您需要运行Java 1.6或更高版本。您可以从Java.com下载最新版本。要查看Windows系统上安装的版本,请打开命令提示符并键入java -version。这假设java.exe在您的PATH中。
- 下载IAM CLI工具包并在本地驱动器上的某处解压缩。
- CLI工具箱的根目录中有2个文件需要更新。
- AWS-credential.template: 此文件包含您的AWS凭据。添加您的AWSAccessKeyId和您的AWSSecretKey,保存并关闭该文件。
- 客户config.template:如果需要代理服务器,则只需更新此文件。删除#符号并更新ClientProxyHost,ClientProxyPort,ClientProxyUsername和ClientProxyPassword。保存并关闭文件。
- 下一步涉及添加环境变量。转到控制面板|系统属性|高级系统设置|环境变量。添加以下变量:
- AWS_IAM_HOME:将此变量设置为解压缩CLI工具包的目录。如果您正在运行Windows并将其解压缩到C驱动器的根目录,则该变量将为C: IAMCli-1.2.0。
- JAVA_HOME:将此变量设置为安装Java的目录。这将是java.exe文件的位置。在正常的Windows 7 Java安装中,这将类似于C: Program Files(x86) Java jre6。
- AWS_CREDENTIAL_FILE:将此变量设置为您在上面更新的aws-credential.template的路径和文件名。如果您运行的是Windows并在C盘的根目录中解压缩,则该变量将为C: IAMCli-1.2.0 aws-credential.template。
- CLIENT_CONFIG_FILE:如果需要代理服务器,则只需添加此环境变量。如果您正在运行Windows并将其解压缩到C驱动器的根目录,则该变量将为C: IAMCli-1.2.0 client-config.template。除非您需要,否则不要添加此变量。
- 通过转到命令提示符并输入iam-userlistbypath来测试安装。只要你没有收到错误,你就应该好好去。
可以从命令提示符运行所有IAM命令。所有命令都以“iam-”开头。
创建一个组
每个AWS账户最多可以创建100个组。虽然您可以在用户级别在IAM中设置权限,但使用组将是最佳做法。以下是在IAM中创建组的过程。
- 创建组的语法是iam-groupcreate -g GROUPNAME -p PATH -v,其中-p和-v是选项。 AWS Docs上提供了有关命令行界面的完整文档。
- 如果你想创建一个名为“awesomeusers”的组,你可以在命令提示符下输入iam-groupcreate -g awesomeusers。
- 您可以通过在命令提示符下输入iam-grouplistbypath来检查该组是否已正确创建。如果您只创建了此组,则输出将类似于“arn:aws:iam :: 123456789012:group / awesomeusers”,其中数字是您的AWS账号。
授予对S3 Bucket和CloudFront的组访问权限
策略控制您的组在S3或CloudFront中可以执行的操作。默认情况下,您的组无法访问AWS中的任何内容。我发现关于策略的文档没问题,但是在创建一些策略时,我做了一些试验和错误,以便按照我希望它们工作的方式工作。
您有两种创建策略的选项。一种选择是您可以直接将它们输入命令提示符。由于您可能正在创建策略并对其进行调整,因此对于我来说,将策略添加到文本文件中然后使用命令iam-groupuploadpolicy将文本文件作为参数上载似乎更容易。以下是使用文本文件并上传到IAM的过程。
- 使用记事本之类的东西并输入以下文本并保存文件:
- {
- “声明”:{
- “效果”:“允许”,
- “行动”: “S3:*”,
- “资源”:
- “阿尔恩:AWS:S3 ::: BUCKETNAME”
- “阿尔恩:AWS:S3 ::: BUCKETNAME / *”
- },
- {
- “效果”:“允许”,
- “行动”: “S3:ListAllMyBuckets”
- “资源”: “阿尔恩:AWS:S3 ::: *”
- },
- {
- “效果”:“允许”,
- “行动”: “CloudFront的:*”,
- “资源”: “*”
- }
- }
- 该政策有3个部分。效果用于允许或拒绝某种类型的访问。行动是小组可以做的具体事情。资源将用于访问各个存储桶。
- 您可以单独限制操作。在此示例中,“Action”:“s3:GetObject”,“s3:ListBucket”,“s3:GetObjectVersion”,该组将能够列出存储桶的内容并下载对象。
- 第一部分“允许”该组执行存储桶“BUCKETNAME”的所有S3操作。
- 第二部分“允许”该组列出S3中的所有存储桶。您需要这样,以便在使用AWS Console之类的东西时实际看到存储桶列表。
- 第三部分为该组提供对CloudFront的完全访问权限。
IAM策略有很多选择。亚马逊有一个非常酷的工具,称为AWS Policy Generator。此工具提供GUI,您可以在其中创建策略并生成实施策略所需的实际代码。您还可以查看使用AWS Identity and Access Management联机文档的“访问策略语言”部分。
创建用户并添加到组
创建新用户并添加到组以提供访问权限的过程涉及几个步骤。
- 创建用户的语法是iam-usercreate -u USERNAME -p PATH -g GROUPS … -k -v,其中-p,-g,-k和-v是选项。 AWS Docs上提供了有关命令行界面的完整文档。
- 如果你想创建一个用户“bob”,你可以在命令提示符下输入iam-usercreate -u bob -g awesomeusers。
- 您可以通过在命令提示符下输入iam-grouplistusers -g awesomeusers来检查用户是否已正确创建。如果您只创建了此用户,则输出将类似于“arn:aws:iam :: 123456789012:user / bob”,其中该数字是您的AWS账号。
创建登录配置文件和创建密钥
此时,您已创建了一个用户,但您需要为他们提供实际添加和删除S3中对象的方法。有两个选项可供您的用户使用IAM访问S3。您可以创建登录配置文件并为用户提供密码。他们可以使用其凭据登录Amazon AWS控制台。另一种选择是为您的用户提供访问密钥和密钥。他们可以在S3 Fox,CloudBerry S3 Explorer或S3 Browser等第三方工具中使用这些键。
创建登录配置文件
为S3用户创建登录配置文件为他们提供了用于登录Amazon AWS Console的用户名和密码。
- 创建登录配置文件的语法是iam-useraddloginprofile -u USERNAME -p PASSWORD。 AWS Docs上提供了有关命令行界面的完整文档。
- 如果要为用户“bob”创建登录配置文件,请在命令提示符下输入iam-useraddloginprofile -u bob -p PASSWORD。
- 您可以通过在命令提示符下输入iam-usergetloginprofile -u bob来检查登录配置文件是否已正确创建。如果您为bob创建了登录配置文件,则输出将类似于“用户bob存在登录配置文件”。
创建密钥
创建AWS秘密访问密钥和相应的AWS Access Key ID将允许您的用户使用前面提到的第三方软件。请记住,作为安全措施,您只能在添加用户配置文件的过程中获取这些密钥。确保复制并粘贴命令提示符中的输出并保存在文本文件中。您可以将文件发送给您的用户。
- 为用户添加密钥的语法是iam-useraddkey -u USERNAME。 AWS Docs上提供了有关命令行界面的完整文档。
- 如果要为用户“bob”创建密钥,可以在命令提示符下输入iam-useraddkey -u bob。
- 该命令将输出看起来像这样的键:
- AKIACOOB5BQVEXAMPLE
- BvQW1IpqVzRdbwPUirD3pK6L8ngoX4PTEXAMPLE
- 第一行是访问密钥ID,第二行是秘密访问密钥。你需要两个第三方软件。
测试访问
现在您已经创建了IAM组/用户并使用策略为组提供了访问权限,您需要测试访问权限。
控制台访问
您的用户可以使用他们的用户名和密码登录AWS控制台。但是,这不是用于主AWS账户的常规控制台登录页面。您可以使用一个特殊的URL,它仅为您的Amazon AWS账户提供登录表单。以下是为您的IAM用户登录S3的URL。
https://AWS-ACCOUNT-NUMBER.signin.aws.amazon.com/console/s3
AWS-ACCOUNT-NUMBER是您的常规AWS账号。您可以登录Amazon Web Service登录表单来获取此信息。登录并单击帐户|帐户活动。您的帐号位于右上角。确保删除破折号。该URL看起来像https://123456789012.signin.aws.amazon.com/console/s3。
使用访问密钥
您可以下载并安装本文中已提到的任何第三方工具。根据第三方工具文档输入您的访问密钥ID和秘密访问密钥。
我强烈建议您创建一个初始用户,让该用户完全测试他们可以在S3中完成他们需要做的所有事情。验证其中一个用户后,您可以继续设置所有S3用户。




