本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
微調政策的資源和條件區段
您可以在 (IAM) 政策中 AWS Identity and Access Management 指定資源和條件,以限制使用者許可的範圍。政策中的每個動作都支援資源和條件類型組合,組合內容取決於動作的行為。
每個IAM政策陳述式都會授予對資源執行動作的許可。當動作不在具名資源上執行動作,或是當您授予對所有資源執行動作的許可,政策中資源的值是萬用字元 (*
)。對於許多動作,您可以透過指定資源的 Amazon Resource Name (ARN) 或符合多個資源的ARN模式來限制使用者可以修改的資源。
根據資源類型,如何限制動作範圍的一般設計如下:
函數 - 在函數上操作的動作可以依函數、版本或別名 限制為特定函數ARN。
-
事件來源映射 – 動作可以由 限制為特定事件來源映射資源ARN。事件來源映射一律與函數相關聯。您也可以使用
lambda:FunctionArn
條件來限制關聯函數的動作。 Layers - 與層使用和許可相關的動作會針對層的版本採取行動。
程式碼簽署組態 – 動作可以由 限制為特定程式碼簽署組態資源ARN。
標籤 – 使用標準標籤條件。如需詳細資訊,請參閱在 Lambda 中使用屬性型存取控制。
若要依資源限制許可,請根據 指定資源ARN。
Lambda 資源ARN格式
-
函數 -
arn:aws:lambda:
us-west-2
:123456789012
:function:my-function
-
函數版本 -
arn:aws:lambda:
us-west-2
:123456789012
:function:my-function
:1
-
函數別名 -
arn:aws:lambda:
us-west-2
:123456789012
:function:my-function
:TEST
-
事件來源映射 -
arn:aws:lambda:
us-west-2
:123456789012
:event-source-mapping:fa123456-14a1-4fd2-9fec-83de64ad683de6d47
-
層 -
arn:aws:lambda:
us-west-2
:123456789012
:layer:my-layer
-
層版本 -
arn:aws:lambda:
us-west-2
:123456789012
:layer:my-layer
:1
-
程式碼簽署組態 –
arn:aws:lambda:
us-west-2
:123456789012
:code-signing-config:my-csc
例如,下列政策允許使用者在 中 AWS 帳戶 123456789012
叫用名為 US West (Oregon) AWS Region my-function
的函數。
範例 呼叫函數政策
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Invoke", "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ],
"Resource": "arn:aws:lambda:us-west-2:123456789012:function:my-function"
} ] }
這是一個特殊情況,其中動作識別符 (lambda:InvokeFunction
) 與 API 操作 (叫用 ) 不同。對於其他動作,動作識別符就是開頭為 lambda:
的操作名稱。
了解政策中的條件區段
條件是選用的政策元素,會套用額外的邏輯來判斷是否允許動作。除了所有動作皆支援的一般條件之外,Lambda 還會定義您可用來限制某些動作之其他參數值的條件類型。
例如,lambda:Principal
條件讓您可在函數的資源型政策中,限制使用者可授予叫用存取權限的服務或帳號。下列政策可讓使用者授予 Amazon Simple Notification Service (Amazon SNS) 主題的許可,以叫用名為 的函數test
。
範例 管理函數政策許可
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManageFunctionPolicy", "Effect": "Allow", "Action": [ "lambda:AddPermission", "lambda:RemovePermission" ], "Resource": "arn:aws:lambda:us-west-2:123456789012:function:test:*",
"Condition": { "StringEquals": { "lambda:Principal": "sns.amazonaws.com" } }
} ] }
條件要求主體是 AmazonSNS,而不是其他服務或帳戶。資源模式要求函數名稱是 test
並包含版本編號或別名。例如:test:v1
。
如需 Lambda 和其他 AWS 服務的資源和條件的詳細資訊,請參閱服務授權參考 中的 AWS 服務的動作、資源和條件索引鍵。
政策資源區段中的參考函數
您可以使用 Amazon Resource Name () 在政策陳述式中參考 Lambda 函數ARN。函數的格式ARN取決於您是參考整個函數 (不合格) 還是函數版本或別名 (合格)。
進行 Lambda API呼叫時,使用者可以在 GetFunction FunctionName
參數ARN中傳遞版本或別名,ARN或在 GetFunction Qualifier
參數中設定值,以指定版本或別名。Lambda 透過比較IAM政策中的資源元素與 FunctionName
和Qualifier
傳入API呼叫兩者,做出授權決策。如果不符,Lambda 會拒絕該請求。
無論您是否允許或拒絕對函數執行的動作,都必須在政策陳述式中使用正確的函數ARN類型,才能達到預期的結果。例如,如果您的政策參考不合格的 ARN,Lambda 接受參考不合格的請求,ARN但拒絕參考合格 的請求ARN。
注意
不能使用萬用字元 (*) 以讓帳戶 ID 相符。如需已接受語法的詳細資訊,請參閱 IAM 使用者指南 中的IAMJSON政策參考。
範例 允許叫用不合格的 ARN
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction",
"Resource": "arn:aws:lambda:us-west-2:123456789012:function:myFunction"
} ] }
如果您的政策參考特定合格的 ARN,Lambda 會接受參考 的請求,ARN但拒絕參考不合格ARN或不同合格 的請求ARN,例如 myFunction:2
。
範例 允許叫用特定合格的 ARN
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction",
"Resource": "arn:aws:lambda:us-west-2:123456789012:function:myFunction:1"
} ] }
如果您的政策ARN參考任何使用 的合格 :*
,Lambda 接受任何合格ARN但拒絕參考不合格 的請求ARN。
範例 允許叫用任何合格的 ARN
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction",
"Resource": "arn:aws:lambda:us-west-2:123456789012:function:myFunction:*"
} ] }
如果您的政策參考任何ARN使用 的 *
,Lambda 接受任何合格或不合格的 ARN。
範例 允許叫用任何合格或不合格 ARN
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction",
"Resource": "arn:aws:lambda:us-west-2:123456789012:function:myFunction*"
} ] }
支援IAM的動作和函數行為
動作定義可透過IAM政策允許的項目。如需 Lambda 中支援的動作清單,請參閱服務授權參考中的 的動作、資源和條件索引鍵 AWS Lambda。在大多數情況下,當IAM動作允許 Lambda API動作時,IAM動作的名稱與 Lambda API動作的名稱相同,但有下列例外:
API 動作 | IAM 動作 |
---|---|
Invoke | lambda:InvokeFunction |
lambda:GetLayerVersion |
除了服務授權參考中定義的資源和條件之外,Lambda 還支援某些動作的下列資源和條件。其中許多與政策資源區段中的參考函數有關。在 函數上操作的動作可以依函數、版本或別名 限制為特定函數ARN,如下表所述。
動作 | 資源 | 條件 |
---|---|---|
叫用 – 許可: |
函式版本 函式別名 |
N/A |
N/A |
|
|
函式別名 |
N/A |