セキュリティおよびアクセス許可
このセクションでは、AWS Lambda MicroVMs の IAM ロール、認証トークン、アクセス制御について説明します。
IAM ロール
ビルドロール
このロールは、イメージの作成時に使用されます。ソースアーティファクトを取得してログを生成するには、s3:GetObject、logs:CreateLogGroup、logs:CreateLogStream、logs:PutLogEvents のアクセス許可が必要です。プライベート ECR イメージを参照する場合は、ecr:GetAuthorizationToken も追加します。
ビルドロールはオプションです。ビルドロールを指定しない場合、Lambda は CloudWatch にビルドログを書き込むことができません。
実行ロール
このロールは、CloudWatch にログを書き込むアクセス許可と他の AWS サービスを使用するアクセス許可を提供するために MicroVM のランタイムに使用されます。
実行ロールはオプションです。実行ロールを指定しない場合、Lambda は CloudWatch にランタイムログを出力せず、MicroVM は他の AWS サービスにアクセスできません。
ライフサイクルフックは、そのフェーズに関連付けられたロールで実行されます。ビルドタイムフック (/ready と /validate) は、ビルドロールで実行されます。ランタイムフック (/run、/resume、/suspend、/terminate) は、実行ロールで実行されます。
信頼ポリシー
どちらのロールにも、Lambda サービスプリンシパル lambda.amazonaws.com が sts:AssumeRole と sts: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:) で実行されている必要があります。MicroVM がこのコネクタで起動されていない場合、us-east-1:aws:network-connector:aws-network-connector:SHELL_INGRESScreate-microvm-shell-auth-token は ValidationException で失敗します。
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:*" } ] }