1. ホーム
  2. amazon-web-services

[解決済み] AWS IAMポリシーを適用した後、どれくらいの期間待てば有効になりますか?

2023-02-05 16:37:38

質問

AWS IAMユーザーポリシーをプログラムで追加・削除しているのですが、それらのポリシーの適用結果が一貫していません。

例えば、これは成功するかもしれないし、しないかもしれない(Java 1.6.6 SDKを使用している)。

  1. 特定のバケットから読み取ることができるユーザーで開始する
  2. ユーザーポリシーを消去する (ポリシーをリストアップし、それぞれに対して "deleteUserPolicy" を呼び出す)
  3. ユーザーがユーザー ポリシーを持たなくなるまで待ちます (空のセットを返すまで "listUserPolicies" を呼び出します)。
  4. バケツからの読み込みを試みます (これは失敗するはずです)

3 と 4 の間にブレークポイントを置き、数秒待つと、ユーザーはバケツから読み込めなくなりますが、これは私が期待するところです。ブレークポイントを削除すると、ユーザーはバケツから読み取ることができますが、これは間違っています。

(これはまた、私が を追加する を追加してからリソースにアクセスした場合にも矛盾します。)

ポリシー変更がIAMシステムだけでなく、コンポーネント(S3、SQSなど)に影響を及ぼしたときを知りたいです。これによる領収書や謝辞を得る方法はないのでしょうか?それとも、一定の待ち時間があるのでしょうか?

ポリシーアプリケーションの内部に関するドキュメントはありますか?

(参考までに、私の質問を以下の場所からコピーしました。 https://forums.aws.amazon.com/thread.jspa?threadID=140383&tstart=0 )

どのように解決するのですか?

の中で、"almost immediately"というフレーズが5回使用されています。 IAM FAQ で 5 回使用されており、もちろん、やや主観的なものです。

AWSはグローバルに分散したシステムなので、変更は伝搬しなければなりませんし、システム全体として可用性とパーティション耐性を優先するように設計されているようです。 とは対照的に 即座の一貫性とは対照的です。

あなたがそれを考慮したかどうかはわかりませんが、フローのステップ 4 で実際に、パス、フェイル、パス、パス、フェイル、フェイル...というシーケンスを見ることは、まったく可能性の範囲内と言えます。 混合整合性 によって証明されるように、バケツもバケツ内のオブジェクトも、実際には一箇所に集まった単一のものではないからです。新しいオブジェクトは即座に一貫性を持ち、上書きと削除は最終的に一貫性を持ちます。

ポリシーのそのような適用を確認するために、AWS は、そのポリシーの複製されたコピーを持っているすべてのエンティティに、それが現在のバージョンを持っていたかどうかを確認するために、(少なくとも間接的に)問い合わせる能力を公開する必要があります... これは、S3 のように巨大なシステムにおいては、少なくとも言っても潜在的に非現実的または扱いにくいでしょうし、驚異的に成長してきたのですが、そのために 2 兆個のオブジェクトを超え、ピーク時の負荷は 1 秒あたり 110 万リクエストを超えます。 .

に対するAWSの公式回答 このフォーラムの投稿 には、より詳細な情報が記載されています。

<ブロッククオート

IAMエンティティに加えた変更はすぐにIAM APIに反映されますが、グローバルに情報が反映されるには顕著な時間がかかることがあります。ほとんどの場合、行った変更は1分未満で反映されます。ネットワーク状況によって遅延が大きくなる場合があります。また、サービスによっては、有効期限が切れて置き換えられるまでに時間がかかる特定の非クレデンシャル情報をキャッシュする場合があります。

その間に何をすべきかについての付随する回答は、"try again."でした。

<ブロッククオート

ほとんどの場合、変更はすぐに反映されるため、最初のわずかな遅延の後、再試行ループを推奨します。スリープした場合、コードはほとんどの場合、あまりにも長く待たされることになり、稀な例外に対しては十分な時間がかからない可能性があります。

私たちはレプリケーションシステムのパフォーマンスを積極的に監視しています。しかし、S3のように、我々は最終的な一貫性のみを保証し、特定の上限を保証するものではありません。