

# Verified Permissions を使用して ID の属性に基づいてアクセスを制御する
<a name="apigateway-lambda-authorizer-verified-permissions"></a>

Amazon Verified Permissions を使用して、API Gateway API へのアクセスを制御します。Verified Permissions で API Gateway を使用すると、Verified Permissions によって Lambda オーソライザーが作成され、きめ細かな承認決定を使用して API へのアクセスが制御されます。Verified Permissions は、Cedar ポリシー言語を使用してポリシーストアスキーマとポリシーに基づいて呼び出し元を承認し、アプリケーションユーザーに対してきめ細かな権限を定義します。詳細については、「Amazon Verified Permissions ユーザーガイド」の「[接続された API と ID プロバイダーを使用してポリシーストアを作成する](https://docs.aws.amazon.com/verifiedpermissions/latest/userguide/getting-started-api-policy-store.html)」を参照してください。**

Verified Permissions は、ID ソースとして Amazon Cognito ユーザープールまたは OpenID Connect (OIDC) ID プロバイダーをサポートします。Verified Permissions は、プリンシパルが以前に識別および認証されていることを前提としています。Verified Permissions は、リージョンおよびエッジ最適化された REST API でのみサポートされています。

## Verified Permissions を使用して Lambda オーソライザーを作成する
<a name="apigateway-lambda-authorizer-verified-permissions-attach"></a>

Verified Permissions は、プリンシパルが API でアクションを実行できるかどうかを判断する Lambda オーソライザーを作成します。Verified Permissions が承認タスクを実行するために使用する Cedar ポリシーを作成します。

以下は、API の `GET /users` リソースの `developer` グループの Amazon Cognito ユーザープール、`us-east-1_ABC1234` に基づいて API を呼び出すアクセスを許可する Cedar ポリシーの例です。Verified Permissions は、呼び出し元の ID のベアラートークンを解析してグループメンバーシップを判別します。

```
permit(
  principal in MyAPI::UserGroup::"us-east-1_ABC1234|developer",
  action in [ MyAPI::Action::"get /users" ],
  resource
  );
```

オプションで、Verified Permissions は API のメソッドにオーソライザーをアタッチできます。API の本番稼働ステージでは、Verified Permissions にオーソライザーをアタッチさせないことをお勧めします。

次のリストは、Lambda オーソライザーを API のメソッドのメソッドリクエストにアタッチする、またはアタッチしないように Verified Permissions を設定する方法を示しています。

**オーソライザーをアタッチする (AWS マネジメントコンソール)**  
Verified Permissions コンソールで **[ポリシーストアを作成]** を選択し、**[アプリ統合のデプロイ]** ページで、**[今すぐ]** を選択します。

**オーソライザーをアタッチしない (AWS マネジメントコンソール)**  
Verified Permissions コンソールで **[ポリシーストアを作成]** を選択し、**[アプリ統合のデプロイ]** ページで、**[後で]** を選択します。  
Verified Permissions は、引き続き Lambda オーソライザーを作成します。Lambda オーソライザーは `AVPAuthorizerLambda-` で始まります。メソッドにオーソライザーをアタッチする方法の詳細については、「[Lambda オーソライザーを使用するようにメソッドを設定する (コンソール)](configure-api-gateway-lambda-authorization.md#configure-api-gateway-lambda-authorization-method-console)」を参照してください。

**オーソライザーをアタッチする (CloudFormation)**  
Verified Permissions で生成された CloudFormation テンプレートの `Conditions` セクションで、`"Ref": "shouldAttachAuthorizer"` を `true` に設定します。

**オーソライザーをアタッチしない (CloudFormation)**  
Verified Permissions で生成された CloudFormation テンプレートの `Conditions` セクションで、`"Ref": "shouldAttachAuthorizer"` を `false` に設定します。  
Verified Permissions は、引き続き Lambda オーソライザーを作成します。Lambda オーソライザーは `AVPAuthorizerLambda-` で始まります。メソッドにオーソライザーをアタッチする方法の詳細については、「[Lambda オーソライザーを使用するようにメソッドを設定する (AWS CLI)](configure-api-gateway-lambda-authorization.md#configure-api-gateway-lambda-authorization-method-cli)」を参照してください。

## Verified Permissions を使用して Lambda オーソライザーを呼び出す
<a name="apigateway-lambda-authorizer-verified-permissions-call"></a>

`Authorization` ヘッダーに ID トークンまたはアクセストークンを指定することで、Lambda オーソライザーを呼び出すことができます。詳細については、「[API Gateway Lambda オーソライザーで API を呼び出す](call-api-with-api-gateway-lambda-authorization.md)」を参照してください。

API Gateway は、Lambda オーソライザーが返すポリシーを 120 秒間キャッシュします。TTL は、API Gateway コンソールまたは AWS CLI を使用して変更できます。