設定 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 () 的 Amazon S3 儲存貯體ARN:

    arn:aws:s3:::amzn-s3-demo-bucket1

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

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

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

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

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

    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:::amzn-s3-demo-bucket1", "arn:aws:s3:::amzn-s3-demo-bucket1/*" ], "Condition": { "StringEquals" : { "s3:DataAccessPointAccount" : "Bucket owner's account ID" } } }] }
範例 – IAM政策,授予使用者使用 Object Lambda 存取點的必要許可

下列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 執行角色的許可

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

注意

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

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

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

  3. 選擇建立角色

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

  5. 選擇 Next (下一步)

  6. 新增許可頁面上,搜尋 AWS 受管政策 AmazonS3ObjectLambdaExecutionRolePolicy,然後選擇政策名稱旁的核取方塊。

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

  7. 選擇 Next (下一步)

  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 評估。