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

Aws sdk 如何使用AWS javascript SDK启用匿名访问?,aws-sdk,Aws Sdk,我们希望能够匿名访问我们的一些AWS资源,例如DynamoD、Polly等。 我们在互联网上搜索了一些有用的文档或示例,但没有找到。在您的政策中,您的负责人应该是* 匿名用户参考文档 (搜索所有人(匿名用户)了解更多信息) 例如: 希望有帮助。当您需要提供对AWS资源的匿名访问时,您需要遵循以下几种最佳做法以避免潜在的安全问题 永远不要向公众公开AWS IAM访问密钥和机密,而是创建一个后端端点,该端点可以从AWS STS请求临时凭据,并与客户端共享临时凭据。另一种选择是使用AWS Cogni

我们希望能够匿名访问我们的一些AWS资源,例如DynamoD、Polly等。
我们在互联网上搜索了一些有用的文档或示例,但没有找到。

在您的政策中,您的负责人应该是*

匿名用户参考文档

(搜索所有人(匿名用户)了解更多信息)

例如:


希望有帮助。

当您需要提供对AWS资源的匿名访问时,您需要遵循以下几种最佳做法以避免潜在的安全问题

  • 永远不要向公众公开AWS IAM访问密钥和机密,而是创建一个后端端点,该端点可以从AWS STS请求临时凭据,并与客户端共享临时凭据。另一种选择是使用AWS Cognito Identity SDK进行匿名访问
  • 具有细粒度的访问控制策略,拒绝所有且仅授予特定资源(例如DynamoDB原始/表、S3 Bucket/对象等)
  • 设置一些公共服务,并将其他服务放在后面(例如,可以允许DynamoDB在AWS API网关后面访问,在这里可以限制请求。另一个示例是在S3和AWS WAF之间使用AWS CloudFront,其中可以应用某些安全限制)

    • @Ashan的回答充满了好的建议;我会投赞成票。只需对其进行一点扩展:

      IAM和匿名访问

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

      亚马逊的建议如下:

      Javascript示例(使用Cognito SDK)

      有一个问题。您只需调用Cognito一次即可获得身份,第二次调用即可获得IAM密钥。然后您可以使用S3、DynamoDB或其他SDK来访问您的资源

      Cognito

      最后,我建议您使用Cognito而不是自己调用STSAPI。Amazon在Cognito保护伞下为此提供了一个很好的SDK,并且这个特定的Cognito功能可以免费使用

      一旦设置了启用了未经身份验证的标识的联合身份池,就可以使用上面javascript示例中的代码

      从Cognito获得IAM密钥后访问服务:

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