3的第1部分
2011年,亚马逊宣布推出针对CloudFront的AWS Identity&Access Management(IAM)支持。 IAM于2010年推出并包含S3支持。 AWS Identity&Access Management(IAM)使您可以在AWS账户中拥有多个用户。 如果您使用过Amazon Web Services(AWS),那么您知道管理AWS中的内容的唯一方法就是提供用户名和密码或访问密钥。
这对我们大多数人来说是一个真正的安全问题。 IAM消除了共享密码和访问密钥的需要。
当员工离开我们的团队时,不断更改我们的主要AWS密码或生成新密钥只是一个混乱的解决方案。 AWS身份和访问管理(IAM)是一个很好的开始,允许单个用户帐户拥有个人密钥。 但是,我们是S3 / CloudFront用户,因此我们一直在关注CloudFront,以便将其添加到最终发生的IAM中。
我发现这项服务的文档有点分散。 有一些第三方产品为身份和访问管理(IAM)提供了一系列支持。 但开发人员通常是节俭的,所以我寻求一种免费的解决方案来管理我们的Amazon S3服务的IAM。
本文将介绍设置支持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命令行工具包是亚马逊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,保存并关闭文件。
- client-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的:*”],
“资源”: “*”
}
]
} - 这个政策有三个部分。 该效果用于允许或拒绝某种类型的访问。 行动是该团体可以做的具体事情。 该资源将用于访问各个桶。
- 您可以单独限制操作。 在此示例中,“Action”:[“s3:GetObject”,“s3:ListBucket”,“s3:GetObjectVersion”],该组将能够列出存储桶的内容并下载对象。
- 第一部分“允许”该组执行桶“BUCKETNAME”的所有S3操作。
- 第二部分“允许”该组列出S3中的所有桶。 你需要这个,所以如果你使用类似AWS控制台的东西,你实际上可以看到桶的列表。
- 第三部分为该组提供了完全访问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控制台。
- 创建登录配置文件的语法是iam-useraddloginprofile -u USERNAME -p PASSWORD。 有关命令行界面的完整文档可在AWS Docs上找到。
- 如果您想为用户“bob”创建登录配置文件,则可以在命令提示符处输入iam-useraddloginprofile -u bob -p PASSWORD。
- 您可以通过在命令提示符处输入iam-usergetloginprofile -u bob来检查是否正确创建了登录配置文件。 如果你已经为bob创建了一个登录配置文件,输出结果就像“用户bob的登录配置文件”。
创建密钥
创建AWS Secret Access Key和相应的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账户号码。 您可以通过登录亚马逊网络服务登录表单获取此信息。 登录并点击账户| 帐户活动。 您的帐号位于右上角。 确保你删除了破折号。 该URL看起来像https://123456789012.signin.aws.amazon.com/console/s3。
使用访问密钥
您可以下载并安装本文中已经提到的任何第三方工具。 根据第三方工具文档输入您的访问密钥ID和秘密访问密钥。
我强烈建议您创建一个初始用户,并让该用户完全测试他们可以完成他们在S3中需要做的所有事情。 验证其中一个用户后,您可以继续设置所有的S3用户。
资源
以下是一些资源,可以让您更好地了解身份和访问管理(IAM)。
- IAM入门
- IAM命令行工具包
- Amazon AWS控制台
- AWS策略生成器
- 使用AWS Identity and Access Management
- IAM发行说明
- IAM论坛
- IAM常见问题