如何使用AWS javascript SDK启用匿名访问?

时间:2017-10-14 22:43:40

标签: aws-sdk

我们希望能够匿名访问我们的一些AWS资源,例如DynamoD,Polly等。 我们已经搜索了互联网,试图寻找一些可用的文档或示例但却找不到任何文档。

3 个答案:

答案 0 :(得分:1)

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

  • 永远不要向公众公开AWS IAM访问密钥和机密,而是创建一个后端端点,该端点可以从AWS STS请求临时凭证并与客户端共享时态凭证。另一种选择是使用具有匿名访问权限的AWS Cognito Identity SDK。
  • 具有细粒度的访问控制策略,拒绝所有并仅授予特定资源(例如DynamoDB Raw / Table,S3 Bucket / Object&等)。
  • 将一些服务设置为公开并将其他服务置于其后(例如,可以允许DynamoDB访问AWS API Gateway,其中可以限制请求。另一个示例是使用AWS CloudFront在S3之前使用AWS WAF,其中可以应用某些安全限制)。

答案 1 :(得分: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": "*"
        }
    ]
}

希望它有所帮助。

答案 2 :(得分: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而不是调用STS API。亚马逊在Cognito保护伞下为此提供了一个很好的SDK,这个特殊的Cognito功能可以免费使用。

设置启用了Unauthenticated Indentities的联合身份池后,您可以使用上面javascript示例中的代码。

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