翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
認証ポリシーを使用して VPC Lattice サービスへのアクセスを制御する
VPC Lattice 認証ポリシーは、指定したプリンシパルによるサービスのグループまたは特定のサービスへのアクセスを制御するために、サービスネットワークまたはサービスにアタッチする IAM ポリシードキュメントです。アクセスを制御する各サービスネットワークまたはサービスに認証ポリシーを 1 つアタッチできます。
注記
サービスネットワークの認証ポリシーは、サービスネットワークのリソース設定には適用されません。
認証ポリシーは IAM アイデンティティベースのポリシーとは異なります。IAM アイデンティティベースのポリシーは、IAM ユーザー、グループ、ロールにアタッチされ、実行できるアクションとリソースを定義します。認証ポリシーはサービスとサービスネットワークにアタッチされます。認可が正常に完了するためには、認可ポリシーとアイデンティティベースのポリシーの両方において、明示的な許可ステートメントが必要です。詳細については、「認可の仕組み」を参照してください。
AWS CLI および コンソールを使用して、 サービスおよびサービスネットワークの認証ポリシーを表示、追加、更新、または削除できます。を使用する場合は AWS CLI、コマンドがプロファイル用に AWS リージョン 設定された で実行されることに注意してください。別のリージョンでコマンドを実行する場合は、プロファイルのデフォルトのリージョンを変更するか、コマンドに --region
パラメータを使用します。
認証ポリシーの使用を開始するには、手順に沿ってサービスネットワークに適用する認証ポリシーを作成します。制限の厳しいアクセス許可を他のサービスには適用しない場合には、オプションで個別のサービスに認証ポリシーを設定できます。
以下の AWS CLI タスクでは、認証ポリシーを使用してサービスネットワークへのアクセスを管理する方法を示します。コンソールでの手順については、「VPC Lattice のサービスネットワーク」を参照してください。
認証ポリシーをサービスネットワークに追加する
このセクションのステップに従って、 を使用して以下 AWS CLI を行います。
-
IAM を使用してサービスネットワークのアクセスコントロールを有効にします。
-
認証ポリシーをサービスネットワークに追加します。認証ポリシーを追加しない場合、すべてのトラフィックでアクセス拒否エラーが発生します。
アクセスコントロールを有効にし、認証ポリシーを新しいサービスネットワークに追加する方法
-
サービスネットワークでアクセスコントロールを有効にして認証ポリシーを使用できるようにするには、create-service-network コマンドを使用して
--auth-type
オプションを値AWS_IAM
と指定します。aws vpc-lattice create-service-network --name
Name
--auth-type AWS_IAM [--tagsTagSpecification
]成功すると、コマンドは以下のような出力を返します。
{ "arn": "
arn
", "authType": "AWS_IAM", "id": "sn-0123456789abcdef0", "name": "Name" } -
put-auth-policy コマンドを使用して、認証ポリシーを追加するサービスネットワークの ID と追加する認証ポリシーを指定します。
例えば、次のコマンドを使用して、ID
でサービスネットワークの認証ポリシーを作成します。sn-0123456789abcdef0
aws vpc-lattice put-auth-policy --resource-identifier
sn-0123456789abcdef0
--policyfile://policy.json
JSON を使用してポリシー定義を作成します。詳細については、「認証ポリシーの一般的な要素」を参照してください。
成功すると、コマンドは以下のような出力を返します。
{ "policy": "
policy
", "state": "Active" }
アクセスコントロールを有効にし、既存のサービスネットワークに認証ポリシーを追加する方法
-
サービスネットワークでアクセスコントロールを有効にして認証ポリシーを使用できるようにするには、update-service-network コマンドを使用して
--auth-type
オプションを値AWS_IAM
と指定します。aws vpc-lattice update-service-network --service-network-identifier
sn-0123456789abcdef0
--auth-type AWS_IAM成功すると、コマンドは以下のような出力を返します。
{ "arn": "
arn
", "authType": "AWS_IAM", "id": "sn-0123456789abcdef0", "name": "Name" } -
put-auth-policy コマンドを使用して、認証ポリシーを追加するサービスネットワークの ID と追加する認証ポリシーを指定します。
aws vpc-lattice put-auth-policy --resource-identifier
sn-0123456789abcdef0
--policyfile://policy.json
JSON を使用してポリシー定義を作成します。詳細については、「認証ポリシーの一般的な要素」を参照してください。
成功すると、コマンドは以下のような出力を返します。
{ "policy": "
policy
", "state": "Active" }
サービスネットワークの認証タイプを変更する
サービスネットワークの認証ポリシーを無効にする方法
update-service-network コマンドを使用して --auth-type
オプションを値 NONE
と指定します。
aws vpc-lattice update-service-network --service-network-identifier
sn-0123456789abcdef0
--auth-type NONE
後ほど認証ポリシーを再度有効にする必要がある場合は、--auth-type
オプションを AWS_IAM
と指定してこのコマンドを実行します。
認証ポリシーをサービスネットワークから削除する
認証ポリシーをサービスネットワークから削除する方法
delete-auth-policy コマンドを使用します。
aws vpc-lattice delete-auth-policy --resource-identifier
sn-0123456789abcdef0
サービスネットワークの認証タイプを NONE
に変更する前に認証ポリシーを削除すると、リクエストはエラーとなります。
以下の AWS CLI タスクでは、認証ポリシーを使用してサービスへのアクセスを管理する方法を示します。コンソールでの手順については、「VPC Lattice のサービス」を参照してください。
認証ポリシーをサービスに追加する
を使用して次のこと AWS CLI を行うには、次の手順に従います。
-
IAM を使用してサービスのアクセスコントロールを有効にします。
-
認証ポリシーをサービスに追加します。認証ポリシーを追加しない場合、すべてのトラフィックでアクセス拒否エラーが発生します。
アクセスコントロールを有効にし、認証ポリシーを新しいサービスに追加する方法
-
サービスでアクセスコントロールを有効にして認証ポリシーを使用できるようにするには、create-service コマンドを使用して
--auth-type
オプションを値AWS_IAM
と指定します。aws vpc-lattice create-service --name
Name
--auth-type AWS_IAM [--tagsTagSpecification
]成功すると、コマンドは以下のような出力を返します。
{ "arn": "
arn
", "authType": "AWS_IAM", "dnsEntry": { ... }, "id": "svc-0123456789abcdef0", "name": "Name", "status": "CREATE_IN_PROGRESS" } -
put-auth-policy コマンドを使用して、認証ポリシーを追加するサービスの ID と追加する認証ポリシーを指定します。
例えば、次のコマンドを使用して、ID
svc-0123456789abcdef0
でサービスの認証ポリシーを作成します。aws vpc-lattice put-auth-policy --resource-identifier
svc-0123456789abcdef0
--policyfile://policy.json
JSON を使用してポリシー定義を作成します。詳細については、「認証ポリシーの一般的な要素」を参照してください。
成功すると、コマンドは以下のような出力を返します。
{ "policy": "
policy
", "state": "Active" }
アクセスコントロールを有効にし、既存のサービスに認証ポリシーを追加する方法
-
サービスでアクセスコントロールを有効にして認証ポリシーを使用できるようにするには、update-service コマンドを使用して
--auth-type
オプションを値AWS_IAM
と指定します。aws vpc-lattice update-service --service-identifier
svc-0123456789abcdef0
--auth-type AWS_IAM成功すると、コマンドは以下のような出力を返します。
{ "arn": "
arn
", "authType": "AWS_IAM", "id": "svc-0123456789abcdef0", "name": "Name" } -
put-auth-policy コマンドを使用して、認証ポリシーを追加するサービスの ID と追加する認証ポリシーを指定します。
aws vpc-lattice put-auth-policy --resource-identifier
svc-0123456789abcdef0
--policyfile://policy.json
JSON を使用してポリシー定義を作成します。詳細については、「認証ポリシーの一般的な要素」を参照してください。
成功すると、コマンドは以下のような出力を返します。
{ "policy": "
policy
", "state": "Active" }
サービスの認証タイプを変更する
サービスの認証ポリシーを無効にする方法
update-service コマンドを使用して --auth-type
オプションを値 NONE
と指定します。
aws vpc-lattice update-service --service-identifier
svc-0123456789abcdef0
--auth-type NONE
後ほど認証ポリシーを再度有効にする必要がある場合は、--auth-type
オプションを AWS_IAM
と指定してこのコマンドを実行します。
認証ポリシーをサービスから削除する
認証ポリシーをサービスから削除する方法
delete-auth-policy コマンドを使用します。
aws vpc-lattice delete-auth-policy --resource-identifier
svc-0123456789abcdef0
サービスの認証タイプを NONE
に変更する前に認証ポリシーを削除すると、リクエストはエラーとなります。
サービスに認証されたリクエストを必要とする認証ポリシーを有効にする場合、そのサービスのすべてのリクエストには、Signature Version 4 (SigV4)を使用して計算された有効なリクエストの署名が含まれている必要があります。詳細については、「Amazon VPC Lattice の SIGv4 認証リクエスト」を参照してください。
認証ポリシーの一般的な要素
VPC Lattice 認証ポリシーは IAM ポリシーと同じ構文を使用して指定されます。詳細については、「IAM ユーザーガイド」の「アイデンティティベースおよびリソースベースのポリシー」を参照してください。
認証ポリシーには、次の要素が含まれます。
-
プリンシパル – ステートメントのアクションとリソースへのアクセスが許可されているユーザーまたはアプリケーションを指します。認証ポリシーでは、プリンシパルはこのアクセス許可の被付与者である IAM エンティティを指します。プリンシパルは IAM エンティティとして認証され、サービスネットワークのサービスのように、特定のリソースまたはリソースのグループにリクエストを送信します。
リソースベースのポリシーで、プリンシパルを指定する必要があります。プリンシパルには、アカウント、ユーザー、ロール、フェデレーティッドユーザー、または AWS サービスを含めることができます。詳細については、「IAM ユーザーガイド」の「AWS JSON ポリシーの要素: プリンシパル」を参照してください。
-
効果 - 指定されたプリンシパルが特定のアクションをリクエストするときの効果を指定します。
Allow
またはDeny
のいずれかとなります。デフォルトでは、IAM を使用してサービスまたはサービスネットワークのアクセスコントロールを有効にした場合、プリンシパルにはサービスまたはサービスネットワークにリクエストをする権限がありません。 -
アクション – アクセス許可を付与または拒否する特定の API アクション。VPC Lattice は、
vpc-lattice-svcs
プレフィックスを使用するアクションをサポートしています。詳細については、「サービス認可リファレンス」の「Amazon VPC Lattice Services で定義されるアクション」を参照してください。 -
リソース – アクションによって影響を受けるサービスです。
-
条件 – 条件はオプションです。ポリシーが有効になるタイミングを制御するために使用できます。詳細については、「サービス認可リファレンス」の「Amazon VPC Lattice Services の条件キー」を参照してください。
認証ポリシーを作成し管理するときは、IAM Policy Generator を使用することもできます。
要件
JSON のポリシーには改行または空白行を含めないでください。
認証ポリシーのリソース形式
特定のリソースへのアクセスを制限するには、次の例のとおり <serviceARN>/<path>
パターンと一致するスキーマを使用し Resource
要素をコーディングする認証ポリシーを作成します。
プロトコル | 例 |
---|---|
HTTP |
|
gRPC |
|
<serviceARN>
には、次の Amazon リソースネーム (ARN)リソース形式を使用します。
arn:aws:vpc-lattice:
region
:account-id
:service/service-id
以下に例を示します。
"Resource": "arn:aws:vpc-lattice:us-west-2:123456789012:service/svc-0123456789abcdef0"
認証ポリシーで使用できる条件キー
アクセスは認証ポリシーの条件要素の条件キーによってさらに細かくコントロールできます。これらの条件キーはプロトコルと、リクエストが Signature Version 4 (SigV4) または匿名のどちらで署名されているかによって、評価の対象となります。条件キーは大文字と小文字が区別されます。
AWS には、 aws:PrincipalOrgID
や などのアクセスを制御するために使用できるグローバル条件キーが用意されていますaws:SourceIp
。 AWS グローバル条件キーのリストを確認するには、「IAM ユーザーガイド」のAWS 「 グローバル条件コンテキストキー」を参照してください。
次のストーリーでは、VPC Lattice 条件キーを一覧表示します。詳細については、「サービス認可リファレンス」の「Amazon VPC Lattice Services の条件キー」を参照してください。
条件キー | 説明 | 例 | 匿名の (認証されていない) 発信者による利用可否 | gRPC での利用可否 |
---|---|---|---|---|
vpc-lattice-svcs:Port |
リクエストが行われたサービスポートによりアクセスをフィルタリング | 80 | あり | あり |
vpc-lattice-svcs:RequestMethod |
リクエスト方法によりアクセスをフィルタリング | GET | はい | 常に POST |
vpc-lattice-svcs:RequestHeader/ |
リクエストヘッダーのヘッダー名と値のペアによりアクセスをフィルタリング | content-type: application/json | あり | あり |
vpc-lattice-svcs:RequestQueryString/ |
リクエスト URL 内のクエリ文字列キーと値のペアによりアクセスをフィルタリング | quux: [corge, grault] | はい | いいえ |
vpc-lattice-svcs:ServiceNetworkArn |
リクエストを受け取ったサービスのサービスネットワークの ARN によりアクセスをフィルタリング | arn:aws:vpc-lattice:us-west-2:123456789012:servicenetwork/sn-0123456789abcdef0 | あり | あり |
vpc-lattice-svcs:ServiceArn |
リクエストを受け取ったサービスの ARN によりアクセスをフィルタリング | arn:aws:vpc-lattice:us-west-2:123456789012:service/svc-0123456789abcdef0 | あり | あり |
vpc-lattice-svcs:SourceVpc |
リクエストが行われた VPC によりアクセスをフィルタリング | vpc-1a2b3c4d | あり | あり |
vpc-lattice-svcs:SourceVpcOwnerAccount |
リクエストが行われた所有アカウントの VPC によりアクセスをフィルタリング | 123456789012 | あり | あり |
匿名 (認証されていない) プリンシパル
匿名プリンシパルは、署名バージョン 4 (SigV4) で AWS リクエストに署名せず、サービスネットワークに接続されている VPC 内にある発信者です。匿名プリンシパルはサービスネットワークのサービスに対して認証されていないリクエストを認証ポリシーで許可されている場合には実行できます。
認証ポリシーの例
認証されたプリンシパルによるリクエストが必要な認証ポリシーの例には次のものがあります。
すべての例で、us-west-2
リージョンと架空のアカウント ID を使用しています。
例 1: 特定の AWS 組織によるサービスへのアクセスを制限する
次の認証ポリシーの例では、ポリシーが適用されるサービスネットワーク内のサービスにアクセスする権限を、認証されたすべてのリクエストに付与します。ただし、リクエストは、条件で指定された AWS 組織に属するプリンシパルから発信される必要があります。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "vpc-lattice-svcs:Invoke",
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:PrincipalOrgID": [
"o-123456example
"
]
}
}
}
]
}
例 2: 特定の IAM ロールによるサービスへのアクセスを制限する
次の認証ポリシーの例では、Resource
要素で指定されたサービスに対して HTTP GET リクエストを行う権限を、IAM ロール rates-client
を使用するすべての認証されたリクエストに付与します。Resource
要素のリソースはポリシーがアタッチされているサービスと同じです。
{
"Version":"2012-10-17",
"Statement":[
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::123456789012
:role/rates-client"
]
},
"Action": "vpc-lattice-svcs:Invoke",
"Resource": [
"arn:aws:vpc-lattice:us-west-2:123456789012
:service/svc-0123456789abcdef0
/*"
],
"Condition": {
"StringEquals": {
"vpc-lattice-svcs:RequestMethod": "GET"
}
}
}
]
}
例 3: 特定の VPC の認証されたプリンシパルによるサービスへのアクセスを制限する
次の認証ポリシーの例では、VPC ID が
の VPC のプリンシパルからの認証されたリクエストのみを許可します。vpc-1a2b3c4d
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "vpc-lattice-svcs:Invoke",
"Resource": "*",
"Condition": {
"StringNotEquals": {
"aws:PrincipalType": "Anonymous"
},
"StringEquals": {
"vpc-lattice-svcs:SourceVpc": "vpc-1a2b3c4d
"
}
}
}
]
}
認可の仕組み
VPC Lattice サービスがリクエストを受信すると、 AWS エンフォースメントコードは関連するすべてのアクセス許可ポリシーをまとめて評価し、リクエストを承認または拒否するかどうかを決定します。リクエストコンテキストに適用されるすべての IAM アイデンティティベースのポリシーと認可ポリシーを認可時に評価します。デフォルトでは、認証タイプが AWS_IAM
の場合、すべてのリクエストは暗黙的に拒否されます。関連するすべてのポリシーからの明示的な許可はデフォルトに優先します。
認可では次のことが行われます。
-
関連するすべての IAM アイデンティティベースのポリシーと認証ポリシーを収集します。
-
収集したポリシーのセットを評価します。
-
リクエスタ (IAM ユーザーまたはロールなど) が属するアカウントにおいて、オペレーションを実行する権限を持っていることを確認します。明示的な許可ステートメントがない場合、 AWS はリクエストを承認しません。
-
リクエストがサービスネットワークの認証ポリシーによって許可されていることを確認します。認証ポリシーが有効であっても明示的な許可ステートメントがない場合、 AWS はリクエストを許可しません。明示的な許可ステートメントがある場合、または認証タイプが
NONE
の場合、コードが継続します。 -
リクエストがサービスの認証ポリシーによって許可されていることを確認します。認証ポリシーが有効であっても明示的な許可ステートメントがない場合、 AWS はリクエストを許可しません。明示的な許可ステートメントがある場合、または認証タイプが
NONE
の場合、エンフォースメントコードにより許可の最終決定が返されます。 -
ポリシー内の明示的な拒否は、すべての許可に優先します。
-
次の図は認可の流れを示しています。リクエストが行われると、関連するポリシーによって特定のサービスへのリクエストアクセスが許可または拒否されます。
