設定 Object Lambda 存取點的 IAM 政策 - Amazon Simple Storage Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

設定 Object Lambda 存取點的 IAM 政策

Amazon S3 存取點支援 AWS Identity and Access Management (IAM) 資源政策,您可以使用這些政策按資源、使用者或其他條件控制存取點的使用。您可以透過 Object Lambda 存取點上的選用資源政策或支援存取點的資源政策來控制存取。如需 step-by-step 範例,請參閱教學課程:使用 S3 Object Lambda 轉換應用程式的資料教學課程:使用 S3 Object Lambda 和 Amazon Comprehend 來偵測和編輯 PII 資料

下列四個資源必須具有使用 Object Lambda 存取點的許可:

  • IAM 身分,例如使用者或角色。如需 IAM 身分與最佳實務的詳細資訊,請參閱《IAM 使用者指南》中的 IAM 身分 (使用者、群組和角色)

  • 儲存貯體及其相關聯的標準存取點。當您使用 Object Lambda 存取點時,此標準存取點稱為支援存取點

  • Object Lambda 存取點。

  • 該 AWS Lambda 功能。

重要

儲存原則之前,請務必先解決安全性警告、錯誤、一般警告和建議 AWS Identity and Access Management Access Analyzer。IAM Access Analyzer 會比對 IAM 政策文法最佳實務來執行政策檢查,以驗證您的政策。這些檢查會產生問題清單並提供可行的建議,協助您撰寫具有功能性且符合安全最佳實務的政策。

若要進一步了解如何使用 IAM Access Analyzer 驗證政策,請參閱《IAM 使用者指南》中的 IAM Access Analyzer 政策驗證。若要檢視 IAM Access Analyzer 傳回的警告、錯誤和建議清單,請參閱 IAM Access Analyzer 政策檢查參考

下列政策範例假設您有下列資源:

  • 含有下列 Amazon Resource Name (ARN) 的 Amazon S3 儲存貯體:

    arn:aws:s3:::DOC-EXAMPLE-BUCKET1

  • 具有下列 ARN 的此儲存貯體上的 Amazon S3 Standard 存取點:

    arn:aws:s3:us-east-1:111122223333:accesspoint/my-access-point

  • 具有下列 ARN 的 Object Lambda 存取點:

    arn:aws:s3-object-lambda:us-east-1:111122223333:accesspoint/my-object-lambda-ap

  • 具有以下 ARN 的 AWS Lambda 函數:

    arn:aws:lambda:us-east-1:111122223333:function:MyObjectLambdaFunction

注意

如果您使用帳戶中的 Lambda 函數,則必須在政策聲明中包含特定函數版本。在下列範例 ARN 中,版本由 1 表示:

arn:aws:lambda:us-east-1:111122223333:function:MyObjectLambdaFunction:1

Lambda 不支援將 IAM 政策新增至版本$LATEST。如需 Lambda 函數版本的詳細資訊,請參閱《AWS Lambda 開發人員指南》中的 Lambda 函數版本

範例 - 將存取控制委派給標準存取點的儲存貯體政策

下列 S3 儲存貯體政策範例會將儲存貯體的存取控制委派給儲存貯體的標準存取點。此政策允許完整存取儲存貯體擁有者帳戶所擁有的所有存取點。因此,對此儲存貯體的所有存取皆由連接至其存取點的政策所控制。使用者只能透過存取點從儲存貯體讀取,這表示只能透過存取點叫用操作。如需詳細資訊,請參閱 將存取控制委派給存取點

{ "Version": "2012-10-17", "Statement" : [ { "Effect": "Allow", "Principal" : { "AWS":"account-ARN"}, "Action" : "*", "Resource" : [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET1", "arn:aws:s3:::DOC-EXAMPLE-BUCKET1/*" ], "Condition": { "StringEquals" : { "s3:DataAccessPointAccount" : "Bucket owner's account ID" } } }] }
範例 — 授予使用者使用物件 Lambda 存取點所需權限的 IAM 政策

下列 IAM 政策許可使用者使用 Lambda 函數、標準存取點和 Object Lambda 存取點。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowLambdaInvocation", "Action": [ "lambda:InvokeFunction" ], "Effect": "Allow", "Resource": "arn:aws:lambda:us-east-1:111122223333:function:MyObjectLambdaFunction:1", "Condition": { "ForAnyValue:StringEquals": { "aws:CalledVia": [ "s3-object-lambda.amazonaws.com" ] } } }, { "Sid": "AllowStandardAccessPointAccess", "Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "arn:aws:s3:us-east-1:111122223333:accesspoint/my-access-point/*", "Condition": { "ForAnyValue:StringEquals": { "aws:CalledVia": [ "s3-object-lambda.amazonaws.com" ] } } }, { "Sid": "AllowObjectLambdaAccess", "Action": [ "s3-object-lambda:Get*", "s3-object-lambda:List*" ], "Effect": "Allow", "Resource": "arn:aws:s3-object-lambda:us-east-1:111122223333:accesspoint/my-object-lambda-ap" } ] }

啟用 Lambda 執行角色的許可

向物件 Lambda 存取點發出GET請求時,您的 Lambda 函數需要將資料傳送至 S3 物件 Lambda 存取點的權限。此許可是透過對您的 Lambda 函數的執行角色啟用 s3-object-lambda:WriteGetObjectResponse 許可來提供的。您可建立新的執行角色,或使用現有的角色進行更新。

注意

只有當您提出 GET 請求時,您的函數才需要 s3-object-lambda:WriteGetObjectResponse 許可。

若要在 IAM 主控台中建立執行角色
  1. 前往 https://console.aws.amazon.com/iam/ 開啟 IAM 主控台。

  2. 在左側導覽窗格中,選擇 Roles (角色)。

  3. 選擇建立角色

  4. Common use cases (一般使用案例) 下,選擇 Lambda

  5. 選擇下一步

  6. 在 [新增權限] 頁面上,搜尋受 AWS 管理的原則 AmazonS3ObjectLambdaExecutionRolePolicy,然後選取原則名稱旁邊的核取方塊。

    此政策應包含 s3-object-lambda:WriteGetObjectResponse 動作。

  7. 選擇下一步

  8. Name, review, and create (命名、檢閱和建立) 頁面上,針對 Role name (角色名稱) 輸入 s3-object-lambda-role

  9. (選用) 新增此角色的描述和標籤。

  10. 選擇建立角色

  11. 套用新建立的 s3-object-lambda-role 作為 Lambda 函數的執行角色。此動作可以在 Lambda 主控台中建立 Lambda 函數期間或之後完成。

如需執行角色的詳細資訊,請參閱《AWS Lambda 開發人員指南》中的 Lambda 執行角色

搭配 Object Lambda 存取點使用內容索引鍵

S3 Object Lambda 將評估內容索引鍵,例如,與連線相或請求簽署相關的 s3-object-lambda:TlsVersions3-object-lambda:AuthType。所有其他內容索引鍵,例如 s3:prefix,都會由 Amazon S3 評估。