

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Verified Access ポリシーロジックでの問題回避
<a name="auth-policies-policy-eval-short-circ"></a>

特定のコンテキストに存在するかどうかにかかわらず、データを評価する AWS Verified Access ポリシーを記述できます。存在しないコンテキスト内のデータを参照すると、意図に関係なく、Cedar はエラーを作成し、ポリシーでアクセスが拒否されるよう評価します。例えば、`fake_provider` と `bogus_key` はこのコンテキストでは存在しないため、結果的に拒否されます。

```
permit(principal, action, resource) when {
  context.fake_provider.bogus_key > 42
};
```

このような状況を回避するには、`has` 演算子を使用してキーが存在するかどうかを確認できます。`has` 演算子が false を返すと、連鎖ステートメントのさらなる評価は停止し、Cedar は存在しない項目の参照を試みることによるエラーを生成しません。

```
permit(principal, action, resource) when {
  context.identity.user has "some_key" && context.identity.user.some_key > 42
};
```

これは、2 つの異なる信頼プロバイダーを参照するポリシーを指定する場合に最も有用です。

```
permit(principal, action, resource) when {
  // user is in an allowed group
  context.aws_idc.groups has "c242c5b0-6081-1845-6fa8-6e0d9513c107"
  &&( 
    ( 
      // if CrowdStrike data is present, 
      // permit if CrowdStrike's overall assessment is over 50
      context has "crowdstrike" && context.crowdstrike.assessment.overall > 50
    )
    || 
    (
      // if Jamf data is present,
      // permit if Jamf's risk score is acceptable
      context has "jamf" && ["LOW", "NOT_APPLICABLE", "MEDIUM", "SECURE"].contains(context.jamf.risk) 
    )
  )
};
```