2017-10-14 79 views

回答

0

在你对这些资源的政策中,你的校长应该是*。

匿名用户参考文档,

http://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html(搜索所有人(匿名用户)获取更多信息)

例如,

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "DescribeQueryScanBooksTable", 
      "Effect": "Allow", 
      "Action": [ 
       "dynamodb:DescribeTable", 
       "dynamodb:Query", 
       "dynamodb:Scan" 
      ], 
      "Principal": "*" 
     } 
    ] 
} 

希望它能帮助。

1

当您需要提供对AWS资源的匿名访问时,需要遵循几个最佳实践来避免潜在的安全问题。

  • 永远不要向公众公开AWS IAM访问密钥和机密,而是创建一个后端端点,可以从AWS STS请求临时凭证并与客户端共享临时凭证。另一个备选方案是使用AWS Cognito Identity SDK进行匿名访问。
  • 具有细粒度的访问控制策略,拒绝全部且仅授予特定资源(例如DynamoDB Raw/Table,S3存储桶/对象&等)。
  • 设置一些公开的服务并将其他服务放在其后面(例如,可以允许DynamoDB访问AWS API网关,其中可以限制请求的范围)另一个示例是将S3的AWS CloudFront infront用于AWS WAF,其中可以应用某些安全限制)。
0

@Ashan的回答充满了好的建议;我会给它一个upvote。只是它扩大一点:

IAM和匿名访问

这些类型的资源通常由IAM安全。因此,允许访问这些资源的应用程序将需要IAM密钥。正如@Ashan指出的,你不想在应用程序中硬编码这些密钥。

亚马逊的建议可以在这里找到: http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html

JavaScript示例(使用Cognito SDK)

有一个javascript example here。您只需拨打Cognito一次以获取身份,并第二次获取IAM密钥。然后,您可以使用S3,DynamoDB或其他SDK来访问您的资源。

Cognito

最后,我会建议使用Cognito在调用的API STS自己。亚马逊在Cognito保护伞下为此提供了一个很好的SDK,并且可以使用此特定的Cognito功能。

设置启用了未经身份验证的联合身份验证池后,您可以使用上述javascript示例中的代码。

从Cognito获得IAM密钥后访问服务: http://docs.aws.amazon.com/cognito/latest/developerguide/accessing-aws-services.html