はじめに
Amazon Connectを利用する際に、運用上Emergency Accessを利用せざるを得ないケースもありますが、その際に仕様を理解すべく調査を行ったのでその備忘です。
Emergency Accessとは
Amazon Connectに対する緊急用のログイン手段としてEmergency Accessが提供されています。
Emergency Accessを実施するにはAWSアカウントの認証情報が必要で、マネジメントコンソール等からアクセスすることになります。この方法でログインしたユーザーは、Amazon Connect上で全権限を持つことになるためあくまでも緊急用のアクセス手段という位置付けになります。
仕組み
Emergency Access用のリンクは以下のようなものになっています。(一部塗りつぶし)
https://ap-northeast-1.signin.aws.amazon.com/oauth?client_id=arn%3Aaws%3Asignin%3A%3A%3Aconsole%2Flily-onboarding&code_challenge={================}&code_challenge_method=SHA-256&response_type=code&redirect_uri=https%3A%2F%2Fap-northeast-1.console.aws.amazon.com%2Fconnect%2Fv2%2Ffederate%3Fadmin%3Dtrue%26arn%3Darn%253Aaws%253Aconnect%253Aap-northeast-1%{この辺りにインスタンス情報}%26isauthcode%3Dtrue%26oauthStart%{==============}%26state%3DhashArgsFromTB_ap-northeast-1_{===============}
このリンクからEmergency Accessの流れとしては
- AWSのサインインエンドポイントへアクセス
- IAMユーザーの認証を実施
- フェデレーションユーザーとして対象のAmazon Connectへログイン
となっていることがわかります。
IAMロールでのアクセス制限
Emergency AccessはIAMロールに拒否ポリシーを付与することで制限することが可能です。(参考)
制限するポリシーはconnect:AdminGetEmergencyAccessTokenです。(Amazon Connectの管理者ガイド では"connect:GetFederationTokens"と記載がありますが現在必要な権限は変更されています)
これは前章で記載の通り、IAMユーザーからフェデレーションを実施してAmazon Connectにログインが行われることに対してフェデレーションを制御するものになります。
例えば特定のユーザーのEmergency Accessを制限するIAMポリシーは以下のようになります。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyEmergencyAccess",
"Effect": "Deny",
"Action": "connect:AdminGetEmergencyAccessToken",
"Resource": "*",
"Condition": {
"StringEqual": {
"aws:userid": "{ユーザーID}"
}
}
}
]
}
まとめ
Emergency Accessは
- AWSアカウントへのログイン認証をもとに全権限をもつフェデレーションユーザーとしてログインを許可するものである
- IAMポリシーにより実施の可否は制限可能
- CloudTrail上で誰がEmergency Accessを実施して操作したのかを判別することが可能
