Function Compute は、Resource Access Management (RAM) を使用して権限を管理します。 RAM を使用すると、AccessKey ペアを他のユーザーと共有する必要はありません。代わりに、必要な最小限の権限のみをユーザーに付与できます。 AccessKey ペアには、AccessKey ID と AccessKey シークレットが含まれています。このトピックでは、システムポリシーとカスタムポリシーを含む、Function Compute のポリシーについて説明します。このトピックでは、カスタムポリシーのサンプルも提供しています。
ポリシータイプ
RAM では、ポリシーはポリシーの構造と構文に基づいて定義された一連の権限です。ポリシーは、承認されたリソースセット、アクションセット、および承認条件を正確に定義します。 Function Compute のポリシーには、次のタイプがあります。
システムポリシー
RAM ユーザーとして初めて Function Compute コンソール にログインする場合は、Alibaba Cloud アカウントを使用して、Function Compute および他の Alibaba Cloud サービスのシステムポリシーを RAM ユーザーにアタッチする必要があります。システムポリシーがアタッチされた後にのみ、RAM ユーザーとして Function Compute を含む Alibaba Cloud サービスにアクセスできます。
次の項目は、さまざまなタイプのシステムポリシーを示しています。
Function Compute のシステムポリシー
ポリシー名
説明
AliyunFCReadOnlyAccess
すべての Function Compute リソースに対する読み取り専用権限。
AliyunFCInvocationAccess
関数を呼び出す権限。
AliyunFCFullAccess
すべての Function Compute リソースを管理する権限。
説明AliyunFCFullAccess ポリシーには、AliyunFCInvocationAccess ポリシーと AliyunFCReadOnlyAccess ポリシーの権限が含まれています。 AliyunFCFullAccess ポリシーを RAM ユーザーにアタッチした後、AliyunFCInvocationAccess ポリシーまたは AliyunFCReadOnlyAccess ポリシーを RAM ユーザーにアタッチする必要はありません。
他の Alibaba Cloud サービスのシステムポリシー
Alibaba Cloud サービス
システムポリシー
Simple Log Service
AliyunLogReadOnlyAccess: Simple Log Service リソースに対する読み取り専用権限。
AliyunLogFullAccess: Simple Log Service リソースを管理する権限。
説明RAM ユーザーとして Simple Log Service にアクセスするには、最小権限の原則に基づいて、AliyunLogReadOnlyAccess ポリシーのみを RAM ユーザーにアタッチする必要があります。
Object Storage Service (OSS)
AliyunOSSReadOnlyAccess: OSS リソースに対する読み取り専用権限。
AliyunOSSFullAccess: OSS リソースを管理する権限。
CloudMonitor
AliyunCloudMonitorReadOnlyAccess: CloudMonitor リソースに対する読み取り専用権限。
Certificate Management Service
AliyunYundunCertReadOnlyAccess: Certificate Management Service リソースに対する読み取り専用権限。
Virtual Private Cloud (VPC)
AliyunVPCReadOnlyAccess: VPC リソースに対する読み取り専用権限。
Elastic Compute Service (ECS)
AliyunECSReadOnlyAccess: ECS リソースに対する読み取り専用権限。
RAM
AliyunRAMReadOnlyAccess: ユーザー、グループ、および承認情報を表示する権限を含む、RAM リソースに対する読み取り専用権限。
AliyunRAMFullAccess: ユーザーの管理と権限の付与を含む、RAM リソースを管理する権限。
説明AliyunRAMReadOnlyAccess ポリシーのみを RAM ユーザーにアタッチすると、RAM ユーザーとしてコンソール内のロールのリストのみを取得できます。 RAM ユーザーとして他の操作を実行する必要がある場合は、AliyunRAMFullAccess ポリシーを RAM ユーザーにアタッチする必要があります。
Application Real-Time Monitoring Service (ARMS)
AliyunARMSReadOnlyAccess: ARMS リソースに対する読み取り専用権限。
AliyunARMSFullAccess: ARMS リソースを管理する権限。
説明RAM ユーザーとして ARMS にアクセスするには、最小権限の原則に基づいて、AliyunARMSReadOnlyAccess ポリシーのみを RAM ユーザーにアタッチする必要があります。
Simple Message Queue (formerly MNS)
AliyunMNSReadOnlyAccess: Simple Message Queue (formerly MNS) リソースに対する読み取り専用権限。
AliyunMNSFullAccess: Simple Message Queue (formerly MNS) リソースを管理する権限。
説明RAM ユーザーとして Simple Message Queue (formerly MNS) にアクセスするには、最小権限の原則に基づいて AliyunMNSReadOnlyAccess ポリシーのみを RAM ユーザーにアタッチする必要があります。 Simple Message Queue (formerly MNS)
EventBridge
AliyunEventBridgeReadOnlyAccess: EventBridge リソースに対する読み取り専用権限。
AliyunEventBridgeFullAccess: EventBridge リソースを管理する権限。
説明RAM ユーザーとして EventBridge にアクセスするには、最小権限の原則に基づいて AliyunEventBridgeReadOnlyAccess ポリシーのみを RAM ユーザーにアタッチする必要があります。
ApsaraMQ for RocketMQ
AliyunMQReadOnlyAccess: ApsaraMQ for RocketMQ リソースに対する読み取り専用権限。
AliyunMQFullAccess: ApsaraMQ for RocketMQ リソースを管理する権限。
説明RAM ユーザーとして ApsaraMQ for RocketMQ にアクセスするには、最小権限の原則に基づいて AliyunMQReadOnlyAccess ポリシーのみを RAM ユーザーにアタッチする必要があります。
Container Registry
AliyunContainerRegistryReadOnlyAccess: Container Registry リソースに対する読み取り専用権限。
AliyunContainerRegistryFullAccess: Container Registry リソースを管理する権限。
説明RAM ユーザーとして Container Registry にアクセスするには、最小権限の原則に基づいて AliyunContainerRegistryReadOnlyAccess ポリシーのみを RAM ユーザーにアタッチする必要があります。
NAS ファイルシステム (NAS)
AliyunNASReadOnlyAccess: NAS リソースに対する読み取り専用権限。
AliyunNASFullAccess: NAS リソースを管理する権限。
説明RAM ユーザーとして NAS にアクセスするには、最小権限の原則に基づいて AliyunNASReadOnlyAccess ポリシーのみを RAM ユーザーにアタッチする必要があります。
ApsaraDB RDS
AliyunRDSReadOnlyAccess: ApsaraDB RDS リソースに対する読み取り専用権限。
AliyunRDSFullAccess: ApsaraDB RDS リソースを管理する権限。
説明RAM ユーザーとして ApsaraDB RDS にアクセスするには、最小権限の原則に基づいて AliyunRDSReadOnlyAccess ポリシーのみを RAM ユーザーにアタッチする必要があります。
Alibaba Cloud DevOps
AliyunRDCReadOnlyAccess: Apsara DevOps RDC リソースに対する読み取り専用権限。
AliyunRDCFullAccess: Apsara DevOps RDC リソースを管理する権限。
説明RAM ユーザーとして ApsaraDB RDS にアクセスするには、最小権限の原則に基づいて AliyunRDCReadOnlyAccesss ポリシーのみを RAM ユーザーにアタッチする必要があります。
トリガー関連のポリシー (例: AliyunOSSFullAccess) を Alibaba Cloud アカウントを使用して RAM ユーザーにアタッチした後に、RAM ユーザーとしてトリガーを更新できない場合は、Alibaba Cloud アカウントを使用して次のカスタムポリシーを RAM ユーザーにアタッチする必要があります。カスタムポリシーがアタッチされると、RAM ユーザーとして OSS イベントトリガーを更新できます。
{
"Statement": [
{
"Action": [
"ram:PassRole"
],
"Effect": "Allow",
"Resource": "*"
}
],
"Version": "1"
}
カスタムポリシー
システムポリシーに加えて、Function Compute は、RAM ユーザーに詳細な権限を付与できるカスタムポリシーをサポートしています。ポリシーの詳細については、「ポリシーの基本要素」をご参照ください。
操作 | リソース | 説明 |
fc:GetAsyncTask | acs:fc:{region}:{uid}:functions/{functionName}/async-tasks/{taskId} | 非同期タスク |
fc:非同期タスクの停止 | acs:fc:{region}:{uid}:functions/{functionName}/async-tasks/{taskId} | |
fc:ListAsyncTasks | acs:fc:{region}:{uid}:functions/{functionName}/async-tasks/* | |
fc:ListFunctionAsyncInvokeConfigs | acs:fc:{region}:{uid}:async-invoke-configs/* acs:fc:{region}:{uid}:functions/{functionName} | 非同期呼び出し構成 |
fc:ListConcurrencyConfigs | acs:fc:{region}:{uid}:concurrency-configs/* acs:fc:{region}:{uid}:functions/{functionName} | 同時実行設定 |
fc:カスタムドメインの一覧表示 | acs:fc:{region}:{uid}:custom-domains/* | すべてのカスタムドメイン名 |
fc:GetCustomDomain | acs:fc:{region}:{uid}:custom-domains/{domainName} | 指定されたカスタムドメイン名 |
fc:カスタムドメインの削除 | ||
カスタムドメインの更新 | ||
fc:カスタムドメインの作成 | ||
fc:ListFunctions | acs:fc:{region}:{uid}:functions/* | すべての関数リソース |
fc:DeleteConcurrencyConfig | acs:fc:{region}:{uid}:functions/{functionName} | |
fc:PutConcurrencyConfig | acs:fc:{region}:{uid}:functions/{functionName} | |
fc:DeleteFunction | acs:fc:{region}:{uid}:functions/{functionName} | |
fc:UpdateFunction | acs:fc:{region}:{uid}:functions/{functionName} | |
fc:CreateFunction | acs:fc:{region}:{uid}:functions/{functionName} | |
fc:GetConcurrencyConfig | acs:fc:{region}:{uid}:functions/{functionName} | |
fc:GetFunction | acs:fc:{region}:{uid}:functions/{functionName} | |
fc:ListAliases | acs:fc:{region}:{uid}:functions/{functionName}/aliases/* | すべてのエイリアス |
fc:CreateAlias | acs:fc:{region}:{uid}:functions/{functionName}/aliases/{aliasName} | 指定されたエイリアス |
fc:UpdateAlias | acs:fc:{region}:{uid}:functions/{functionName}/aliases/{aliasName} | |
fc:GetAlias | acs:fc:{region}:{uid}:functions/{functionName}/aliases/{aliasName} | |
fc:DeleteAlias | acs:fc:{region}:{uid}:functions/{functionName}/aliases/{aliasName} | |
fc:ListInstances | acs:fc:{region}:{uid}:functions/{functionName}/instances/* | インスタンス情報 |
fc:ListTriggers | acs:fc:{region}:{uid}:functions/{functionName}/triggers/* | 指定された関数のすべてのトリガーリソース |
fc:CreateTrigger | acs:fc:{region}:{uid}:functions/{functionName}/triggers/{triggerName} | 指定された関数の特定のトリガーリソース |
fc:UpdateTrigger | acs:fc:{region}:{uid}:functions/{functionName}/triggers/{triggerName} | |
fc:GetTrigger | acs:fc:{region}:{uid}:functions/{functionName}/triggers/{triggerName} | |
fc:DeleteTrigger | acs:fc:{region}:{uid}:functions/{functionName}/triggers/{triggerName} | |
fc:PublishFunctionVersion | acs:fc:{region}:{uid}:functions/{functionName}/versions | すべてのバージョン |
fc:ListFunctionVersions | acs:fc:{region}:{uid}:functions/{functionName}/versions/* | |
fc:DeleteFunctionVersion | acs:fc:{region}:{uid}:functions/{functionName}/versions/{versionId} | 指定されたバージョン |
fc:ListVpcBindings | acs:fc:{region}:{uid}:functions/{functionName}/vpc-bindings/* | VPC の構成 |
fc:CreateVpcBinding | acs:fc:{region}:{uid}:functions/{functionName}/vpc-bindings/* | |
fc:DeleteVpcBinding | acs:fc:{region}:{uid}:functions/{functionName}/vpc-bindings/{vpcId} | |
fc:GetFunctionCode | acs:fc:{region}:{uid}:functions/{functionName} acs:fc:{region}:{uid}:functions/{functionName}/{qualifier} | すべての機能コード |
fc:GetFunctionAsyncInvokeConfig | acs:fc:{region}:{uid}:functions/{functionName} acs:fc:{region}:{uid}:functions/{functionName}/{qualifier} | すべての関数リソース |
プロビジョニング構成の削除 | acs:fc:{region}:{uid}:functions/{functionName} acs:fc:{region}:{uid}:functions/{functionName}/{qualifier} | |
fc:PutProvisionConfig | acs:fc:{region}:{uid}:functions/{functionName} acs:fc:{region}:{uid}:functions/{functionName}/{qualifier} | |
fc:InvokeFunction | acs:fc:{region}:{uid}:functions/{functionName} acs:fc:{region}:{uid}:functions/{functionName}/{qualifier} | |
fc:PutFunctionAsyncInvokeConfig | acs:fc:{region}:{uid}:functions/{functionName} acs:fc:{region}:{uid}:functions/{functionName}/{qualifier} | |
fc:GetProvisionConfig | acs:fc:{region}:{uid}:functions/{functionName} acs:fc:{region}:{uid}:functions/{functionName}/{qualifier} | |
fc:DeleteFunctionAsyncInvokeConfig | acs:fc:{region}:{uid}:functions/{functionName} acs:fc:{region}:{uid}:functions/{functionName}/{qualifier} | |
fc:GetLayerVersionByArn | acs:fc:{region}:{uid}:layerarn/{arn} | すべてのレイヤー |
fc:ListLayers | acs:fc:{region}:{uid}:layers/* | |
fc:PutLayerACL | acs:fc:{region}:{uid}:layers/{layerName} | |
fc:ListLayerVersions | acs:fc:{region}:{uid}:layers/{layerName}/versions/* | |
fc:CreateLayerVersion | acs:fc:{region}:{uid}:layers/{layerName}/versions/* | |
fc:DeleteLayerVersion | acs:fc:{region}:{uid}:layers/{layerName}/versions/{version} | |
fc:GetLayerVersion | acs:fc:{region}:{uid}:layers/{layerName}/versions/{version} | |
fc:ListProvisionConfigs | acs:fc:{region}:{uid}:provision-configs/* acs:fc:{region}:{uid}:functions/{functionName} | プロビジョニングされたインスタンス構成 |
上記の カスタムポリシー を使用して、中国 (杭州) リージョンで デモ 関数を呼び出す権限を構成できます。次の コード スニペット は詳細を示しています。
{
"Version": "1",
"Statement": [
{
"Action": [
"fc:InvokeFunction" // 関数の呼び出し
],
"Resource": "acs:fc:cn-hangzhou:*:functions/demo", // 中国 (杭州) リージョンの demo 関数
"Effect": "Allow" // 許可
}
]
}
サンプルポリシー
サービスの作成とクエリ、および関数の作成と呼び出しを行うためのカスタムポリシー
{
"Version": "1",
"Statement": [{
"Action": [
"fc:CreateFunction",
"fc:GetFunction",
"fc:InvokeFunction"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"ram:PassRole"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
ログにアクセスするためのカスタムポリシー
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"log:ListProject",
"log:ListLogStore"
],
"Resource": "acs:log:*:*:project/*"
}
]
}
OSS イベントトリガーにアクセスするためのカスタムポリシー
{
"Statement": [
{
"Action": [
"oss:ListBucket",
"oss:GetBucketEventNotification",
"oss:PutBucketEventNotification",
"oss:DeleteBucketEventNotification"
],
"Effect": "Allow",
"Resource": "*"
}
],
"Version": "1"
}
インターネットにアクセスできるサービスの作成を禁止するカスタムポリシー
{
"Version": "1",
"Statement": [
{
"Action": "fc:UpdateFunction",
"Effect": "Deny",
"Resource": "*",
"Condition": {
"StringEquals": {
"fc:EnableServiceInternetAccess": "true"
}
}
},
{
"Action": "fc:CreateFunction",
"Effect": "Deny",
"Resource": "*",
"Condition": {
"StringNotEquals": {
"fc:EnableServiceInternetAccess": "false"
}
}
}
]
}
Simple Log Service にアクセスできないサービスの作成を禁止するカスタムポリシー
{
"Version": "1",
"Statement": [
{
"Action": "fc:UpdateFunction",
"Effect": "Deny",
"Resource": "*",
"Condition": {
"StringEquals": {
"fc:EnableServiceSLSLogging": "false"
}
}
},
{
"Action": "fc:CreateFunction",
"Effect": "Deny",
"Resource": "*",
"Condition": {
"StringNotEquals": {
"fc:EnableServiceSLSLogging": "true"
}
}
}
]
}
インターネット経由でアクセスできるトリガーの作成を禁止するカスタムポリシー
{
"Version": "1",
"Statement": [
{
"Action": "fc:UpdateTrigger",
"Effect": "Deny",
"Resource": "*",
"Condition": {
"StringEquals": {
"fc:EnableHTTPTriggerInternet": "true"
}
}
},
{
"Action": "fc:CreateTrigger",
"Effect": "Deny",
"Resource": "*",
"Condition": {
"StringEquals": {
"fc:EnableHTTPTriggerInternet": "true"
}
}
}
]
}
このポリシーは、CreateTrigger 操作と UpdateTrigger 操作で、ユーザーが disableURLInternet
パラメーターを false
に設定することを禁止します。 このパラメーターの値は、デフォルトのパブリックドメイン名がサポートされていないことを示す true
にのみ設定できます。 この制限は、HTTP トリガーにのみ適用されます。 詳細については、「HTTPTriggerConfig」をご参照ください。
この場合、disableURLInternet=false
を設定すると、403 AccessDenied
エラーが報告されます。 次のコードは例を示しています。
{
"statusCode":403,
"Code":"AccessDenied",
"Message":"the caller is not authorized to perform 'fc:CreateTrigger' on resource 'acs:fc:xx:xx:functions/xx/triggers/xx' with condition '[fc:EnableHTTPTriggerInternet=true]'"
}
匿名モードでアクセスできるトリガーの作成を禁止するカスタムポリシー
{
"Version": "1",
"Statement": [
{
"Action": "fc:UpdateTrigger",
"Effect": "Deny",
"Resource": "*",
"Condition": {
"StringEquals": {
"fc:EnableHTTPTriggerAnonymous": "true"
}
}
},
{
"Action": "fc:CreateTrigger",
"Effect": "Deny",
"Resource": "*",
"Condition": {
"StringEquals": {
"fc:EnableHTTPTriggerAnonymous": "true"
}
}
}
]
}
このポリシーは、CreateTrigger 操作と UpdateTrigger 操作で、ユーザーが authType
パラメーターを anonymous
に設定することを禁止します。 このパラメーターの値は、認証が必要であることを指定する function
にのみ設定できます。 この制限は、HTTP トリガーにのみ適用されます。 詳細については、「HTTPTriggerConfig」をご参照ください。
この場合、authType=anonymous
を設定すると、403 AccessDenied
エラーが報告されます。 次のコードは例を示しています。
{
"statusCode":403,
"Code":"AccessDenied",
"Message":"the caller is not authorized to perform 'fc:CreateTrigger' on resource 'acs:fc:xx:xx:functions/xx/triggers/xx' with condition '[fc:EnableHTTPTriggerAnonymous=true]'"
}
HTTP リクエストを許可するカスタムドメイン名の作成を禁止するカスタムポリシー
{
"Version": "1",
"Statement": [
{
"Action": "fc:CreateCustomDomain",
"Effect": "Deny",
"Resource": "*",
"Condition": {
"StringEquals": {
"fc:EnableCustomDomainHTTP": "true"
}
}
},
{
"Action": "fc:UpdateCustomDomain",
"Effect": "Deny",
"Resource": "*",
"Condition": {
"StringEquals": {
"fc:EnableCustomDomainHTTP": "true"
}
}
}
]
}
このポリシーは、CreateCustomDomain 操作と UpdateCustomDomain 操作で、ユーザーが protocol
パラメーターを HTTP
または HTTP,HTTPS
に設定することを禁止します。 このパラメーターは HTTPS
にのみ設定できます。
カスタムドメイン名で HTTP
を有効にしようとすると、403 AccessDenied
エラーが報告されます。 次のコードは例を示しています。
{
"statusCode":403,
"Code":"AccessDenied",
"Message":"the caller is not authorized to perform 'fc:CreateCustomDomain' on resource 'acs:fc:xxx:xxx:custom-domains/xxx' with condition '[fc:EnableCustomDomainHTTP=true]'"
}