CloudTrail で sourceIPAddress が AWS Internal と表示される ChangePassword は aws:ViaAWSService で許可できるのか検証してみた
はじめに
やかめです。
IP アドレス制限の Deny ポリシーが設定された環境で、コンソール初回ログイン時に要求されるパスワード変更ができないというケースを拝見しました。
CloudTrail を確認したところ、ChangePassword イベントの sourceIPAddress は AWS Internal と記録されている一方、ConsoleLogin イベントの sourceIPAddress は許可されていない IP アドレスが記録されている状況でした。
この際、対処方法として以下の 2 つを考えました。
aws:ViaAWSService条件を利用する- アクセス元の IP アドレスを許可リストに追加する
「AWS Internal と表示されているなら aws:ViaAWSService で許可できそう」と思いましたが、実際はどうなのかを検証しました。
結論
結論としては、アクセス元の IP アドレスを許可リストに追加する方法でパスワード変更が可能となりました。
aws:ViaAWSService を使っても回避はできませんでした。
AWS Internal とは
CloudTrail の sourceIPAddress フィールドに AWS Internal と記録されることがあります。これは、リクエストが AWS の内部ネットワークから実行されたことを示します。
aws:ViaAWSService とは
aws:ViaAWSService は、AWS サービスが IAM プリンシパルの資格情報を使用して別の AWS サービスを呼び出したかどうか判定するグローバル条件キーです。いわゆる サービス間連携 の場合に true になります。
- 例:Lambda → S3
- 例:S3 → KMS
- 例:Step Functions → DynamoDB
IP 制限との組み合わせ
IP 制限ポリシーで NotIpAddress を使用している場合、サービス間連携によるアクセスもブロックされることがあります。そのため、aws:ViaAWSService を組み合わせることで、
- 通常のユーザーアクセスは IP 制限を適用
- サービス間連携の場合は Deny を回避
といった制御が可能になります。
なぜ aws:ViaAWSService では解決できないのか
下記の記事のように、sourceIPAddress が AWS Internal となっているケースでも、ポリシーに aws:ViaAWSService を追加することで解決できる場合があります。
この記事のケースでは、
- ユーザーが S3 に対して
PutObject - S3 が内部的に KMS の
GenerateDataKeyを呼び出す - KMS 側の CloudTrail では
sourceIPAddress = AWS Internal - 実態は S3 → KMS のサービス間連携
という構造になっています。この場合は、aws:ViaAWSService が true になるため、この条件キーで回避できました。
一方、ChangePassword の場合、IAM ユーザーが IAM に対して直接 API リクエストを送信している構造であると考えられます。
これは、「AWS サービスが IAM プリンシパルの資格情報を使用して別の AWS サービスを呼び出す」という aws:ViaAWSService の定義に該当するサービス間連携の構造とは異なります。
そのため、sourceIPAddress が AWS Internal と表示されていたとしても、aws:ViaAWSService は true にならず、IP 制限の Deny 条件を回避できなかったものと推測されます。
また、コンソールログイン自体は IAM ポリシーの評価対象外であるため、IP 制限の Deny ポリシーが設定されていてもログインは成功します。
しかし、ログイン後に実行される ChangePassword API コールは IAM ポリシーの評価対象となるため、ここで IP 制限に引っかかりパスワード変更が失敗します。
結果として、ログインはできるがパスワード変更ができないという状態になります。
補足
CloudTrail では、ConsoleLogin と ChangePassword は記録されるリージョンが異なる場合があります。
- ConsoleLogin はサインインエンドポイントのリージョンに記録される
- ChangePassword は IAM の API 操作のため、us-east-1 に記録される
トラブルシュートの際は、確認するリージョンに注意してください。
まとめ
- IP 制限環境でパスワード変更を許可するには、実際のアクセス元 IP を許可する必要がある
sourceIPAddressがAWS Internalと表示されていても、aws:ViaAWSService = trueを意味するわけではない- ChangePassword はサービス間連携ではないため、
aws:ViaAWSServiceでは IP 制限を回避できない可能性が高い
参考になれば幸いです。
参考情報
ChangePassword - AWS Identity and Access Management
IAM の仕組み - AWS Identity and Access Management
クラスメソッドオペレーションズ株式会社について
クラスメソッドグループのオペレーション企業です。
運用・保守開発・サポート・情シス・バックオフィスの専門チームが、IT・AIをフル活用した「しくみ」を通じて、お客様の業務代行から課題解決や高付加価値サービスまでを提供するエキスパート集団です。
当社は様々な職種でメンバーを募集しています。
「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、クラスメソッドオペレーションズ株式会社 コーポレートサイト をぜひご覧ください。※2026年1月 アノテーション㈱から社名変更しました






