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