View a markdown version of this page

セキュリティおよびアクセス許可 - AWS Lambda

セキュリティおよびアクセス許可

このセクションでは、AWS Lambda MicroVMs の IAM ロール、認証トークン、アクセス制御について説明します。

IAM ロール

ビルドロール

このロールは、イメージの作成時に使用されます。ソースアーティファクトを取得してログを生成するには、s3:GetObjectlogs:CreateLogGrouplogs:CreateLogStreamlogs:PutLogEvents のアクセス許可が必要です。プライベート ECR イメージを参照する場合は、ecr:GetAuthorizationToken も追加します。

ビルドロールはオプションです。ビルドロールを指定しない場合、Lambda は CloudWatch にビルドログを書き込むことができません。

実行ロール

このロールは、CloudWatch にログを書き込むアクセス許可と他の AWS サービスを使用するアクセス許可を提供するために MicroVM のランタイムに使用されます。

実行ロールはオプションです。実行ロールを指定しない場合、Lambda は CloudWatch にランタイムログを出力せず、MicroVM は他の AWS サービスにアクセスできません。

ライフサイクルフックは、そのフェーズに関連付けられたロールで実行されます。ビルドタイムフック (/ready/validate) は、ビルドロールで実行されます。ランタイムフック (/run/resume/suspend/terminate) は、実行ロールで実行されます。

信頼ポリシー

どちらのロールにも、Lambda サービスプリンシパル lambda.amazonaws.comsts:AssumeRolests:TagSession を実行することを許可する信頼ポリシーが必要です。

認証トークン

トークンは、実行中の MicroVM へのインバウンドアクセスを制御します。トークンはポート範囲です。各トークンはアクセスを付与するポートを指定します。

# Token granting access to all ports aws lambda-microvms create-microvm-auth-token \ --microvm-identifier <id> \ --expiration-in-minutes 30 \ --allowed-ports '[{"allPorts":{}}]' # Token granting access to port 8080 only aws lambda-microvms create-microvm-auth-token \ --microvm-identifier <id> \ --expiration-in-minutes 30 \ --allowed-ports '[{"port":8080}]'

シェルアクセストークン

シェルアクセスでは、個別のトークン API を使用します。ターゲット MicroVM は、SHELL_INGRESS ネットワークコネクタ (arn:aws:lambda:us-east-1:aws:network-connector:aws-network-connector:SHELL_INGRESS) で実行されている必要があります。MicroVM がこのコネクタで起動されていない場合、create-microvm-shell-auth-tokenValidationException で失敗します。

aws lambda-microvms create-microvm-shell-auth-token \ --microvm-identifier <id> \ --expiration-in-minutes 30

MicroVM シェルへの接続の完全なウォークスルーについては、「シェルアクセス」を参照してください。

リソースのタグ付け

Lambda MicroVM リソース (イメージ、MicroVM) は、組織とコスト配分を目的とする AWS リソースタグをサポートします。タグは、--tags パラメータを使用してイメージを作成するとき、または作成後に明示的に追加します。次に示すように、タグを一覧表示および削除することもできます。IAM ポリシー条件でタグを参照して、MicroVM リソースへのアクセスを制御することもできます。

# Add tags when creating an image aws lambda-microvms create-microvm-image \ --name my-app-image \ --code-artifact '{"uri":"s3://my-bucket/app.zip"}' \ --base-image-arn arn:aws:lambda:us-east-1:aws:microvm-image:al2023-1 \ --build-role-arn arn:aws:iam::123456789012:role/MicrovmBuildRole \ --tags '{"Environment":"production","Team":"platform"}' # List tags on a resource aws lambda-microvms list-tags \ --resource arn:aws:lambda:us-east-1:123456789012:microvm-image:my-app-image # Add tags to an existing resource aws lambda-microvms tag-resource \ --resource arn:aws:lambda:us-east-1:123456789012:microvm-image:my-app-image \ --tags '{"CostCenter":"12345","Project":"sandbox-platform"}' # Remove tags by key aws lambda-microvms untag-resource \ --resource arn:aws:lambda:us-east-1:123456789012:microvm-image:my-app-image \ --tag-keys '["CostCenter","Project"]'

IAM アクセス許可のリファレンス

Lambda MicroVMs は次の IAM アクションを定義します。これらを IAM ポリシーで使用して、MicroVM オペレーションへのアクセスを制御します。

[アクション] 説明
lambda:CreateMicrovmImage 新しい MicroVM イメージを作成します。
lambda:UpdateMicrovmImage 既存の MicroVM イメージを更新します。
lambda:DeleteMicrovmImage MicroVM イメージを削除します。
lambda:GetMicrovmImage MicroVM イメージの詳細を取得します。
lambda:ListMicrovmImages アカウントの MicroVM イメージを一覧表示します。
lambda:RunMicrovm 新しい MicroVM を実行します。
lambda:GetMicrovm MicroVM の状態と詳細を取得します。
lambda:ListMicrovms アカウントの MicroVM を一覧表示します。
lambda:SuspendMicrovm 実行中の MicroVM を一時停止します。
lambda:ResumeMicrovm 一時停止した MicroVM を再開します。
lambda:TerminateMicrovm MicroVM を終了します。
lambda:CreateMicrovmAuthToken MicroVM の認証トークンを生成します。
lambda:CreateMicrovmShellAuthToken シェルアクセストークンを生成します。

リソース ARN の形式

# MicroVM image arn:aws:lambda:<region>:<account>:microvm-image:<image-name> # MicroVM instance arn:aws:lambda:<region>:<account>:microvm:<microvm-id> # Network connector arn:aws:lambda:<region>:<account>:network-connector:<connector-id>

例: オペレーションの最小特権ポリシー

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:RunMicrovm", "lambda:GetMicrovm", "lambda:ListMicrovms", "lambda:SuspendMicrovm", "lambda:ResumeMicrovm", "lambda:TerminateMicrovm", "lambda:CreateMicrovmAuthToken" ], "Resource": "arn:aws:lambda:*:123456789012:microvm:*" }, { "Effect": "Allow", "Action": ["lambda:GetMicrovmImage", "lambda:ListMicrovmImages"], "Resource": "arn:aws:lambda:*:123456789012:microvm-image:*" } ] }