我喜欢使用IAM(身份和访问管理)为特定目的创建具有特定权限的用户/组。
产品广告API要求使用访问密钥(请求参数为AWSAccessKeyId),IAM可以生成访问密钥,但我看不出有什么方法可以让IAM用户/组仅访问产品广告API。
有人知道这能不能做到吗?或者你知道变通办法吗?
更新
阅读上面提到的亚马逊产品API的IAM政策完全表明,提问者实际上试图做到这一点,即使用IAM访问密钥访问产品广告API,但显然没有效果。因此,我担心提到的AWS团队的回应必须从字面上理解,不幸的是,IAM还没有涵盖您的用例。
初步答复
AWS身份和访问管理(IAM)目前不支持产品广告API(请参阅AWS团队对亚马逊产品API IAM政策的回应),但假设IAM访问密钥也在那里工作,您可以至少通过相应的IAM政策(应涵盖大多数关键政策)拒绝您的用户/组访问支持IAM的其他AWS服务。推荐的AWS策略生成器可以帮助制定相应的策略,实际上可能就这么简单(我刚刚选择了效果->拒绝并选中AWS服务->所有服务复选框):
{
"Statement": [
{
"Sid": "Stmt1331670627168",
"Action": "*",
"Effect": "Deny",
"Resource": "*"
}
]
}
由于亚马逊产品API尚未包含在IAM策略中,因此可以预期,由于默认情况是拒绝,因此用户无需附加任何策略就足够了。(换句话说,对于此类用户,除了不受IAM保护的产品API外,所有内容都将被拒绝。)
但事实并非如此。无论我尝试了什么,我只能用根密钥访问API。(为了避免安全隐患,我决定注册一个没有信用卡的额外账户。)
亚马逊产品API使用IAM。
我创建了IAM用户。它不在一个组中,也没有任何角色。我只附加了"AdministratorAccess"策略。我在"ItemSearch"one_answers"CartCreate"操作中测试了它。它运行得很好。
您还可以创建一个新的拒绝策略,以限制用户访问byronicM在此处描述的其他服务:https://forums.aws.amazon.com/message.jspa?messageID=289929#289929
这是今年早些时候悄悄添加的(文档)。使用此策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "ProductAdvertisingAPI:*",
"Resource": "*"
}
]
}
在亚马逊支持之前,建议您创建一个单独的完整密钥,并在开发完成后将其删除。所以,第一个生产密钥不会暴露,也不需要更改,这将节省您的时间。