2017-10-14 76 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