Amazon Q へのチャットを禁止したいときはどうするの?Amazon Q 関連のサービス名前空間を整理してみた #AWSreinvent

Amazon Q に関連する機能やサービスが多いので、ちょっとだけ整理しました。

コンバンハ、千葉(幸)です。

先日発表された Amazon Q、 マネジメントコンソールにチャット画面が出てきたり他のサービスとの関連が発表されたりと盛り上がっていますね。

例えばこういった新サービスが発表されたとき、わたしはサービスの名前空間を気にします。言い換えれば IAM ポリシーでどんな権限が必要になるのかが気になります。ここでの名前空間とは、ec2:RunInstancesのように IAM ポリシー内でアクションを記述する際に:の前にくるサービスプレフィックス(例ではec2)を指していると捉えてください。

マネジメントコンソール上で Amazon Q に質問を投げる、というのにも権限が必要です。それはどんなアクションなのか?IAM ポリシーでどういった権限を与えてあげればいいのか?

また、Amazon Q に関連した他のサービスを操作するときに必要なのは同じ名前空間の権限なのか?もろもろ気になります。

現時点で分かった内容を整理してみます。

Amazon Q は現時点でプレビューです。今後内容が変更される可能性があります。

Amazon Q 関連の名前空間まとめ

サービス名 名前空間 補足
Amazon Q q コンソールに出てくるチャット画面など
Amazon Q Business qbusiness マネジメントコンソールで「Amazon Q」の画面に遷移したところ
AWS Network Manager Chat networkmanager-chat Amazon Q network troubleshootingの画面
Amazon Q in Connect wisdom 従来の Amazon Wisdom 相当の機能
  • ここでの「サービス名」は、以下の AWS CLI コマンドで得られるものをベースにしています
  • 例えば Amazon QuickSight など他のサービスと Amazon Q が関連する際には、qの名前空間の権限が必要になるはずです
    • この辺りはまだ手探りの部分が多いので追って追記していきます

Amazon Q in Connect を除く 3 つのサービスについて整理していきます。

サービス名:Amazon Q

ここでの「Amazon Q」は主にコンソールに表示されるここのことを指します。

Amazon_Q_1

ここに関連するパーミッションは以下のものがあります。(Manage access to Amazon Q with IAM policies - Amazon Qより引用)

Name Description of permission granted What feature is it required for?
q:StartConversation Start a conversation with Amazon Q Required to have conversations with Amazon Q
q:SendMessage Send a message to Amazon Q Required to have conversations with Amazon Q
q:GetConversation Get individual messages associated with a specific conversation with Amazon Q Required to use Amazon Q network troubleshooting
q:StartTroubleshootingAnalysis Start a troubleshooting analysis with Amazon Q Required to use troubleshooting console errors with Amazon Q
q:GetTroubleshootingResults Get troubleshooting results with Amazon Q Required to use troubleshooting console errors with Amazon Q
q:StartTroubleshootingResolutionExplanation Start a troubleshooting resolution explanation with Amazon Q Required to use troubleshooting console errors with Amazon Q

名前空間 q のアクションを Deny してみた

以下のように名前空間qのアクションを全て拒否するポリシーをアタッチした IAM エンティティでチャットを操作してみます。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "q:*",
            "Resource": "*"
        }
    ]
}

チャットのインターフェース自体は変わらず表示されますが、質問を投げた際に権限不足である旨の回答が返ってきました。

Amazon_Q_Deny

You don't have permission to use Amazon Q.

You or your AWS administrator must update your IAM permissions to allow the use of Amazon Q. After you obtain the necessary permissions, reload the panel to access Amazon Q. You can grant access to Amazon Q by attaching the AmazonQFullAccess policy to your IAM identity. For more information, see AWS managed policies for Amazon Q.

サービス名:Amazon Q Business

ここでの Amazon Q Business は、AWS マネジメントコンソールのサービス一覧で「Amazon Q」と検索して辿り着ける以下の画面に関連する操作を表します。

Amazon_Q_Businness

ここでは「アプリケーション」というリソースを作成して管理していくことになります。

関連するアクションは 61 個あり、以下を参照すると良さそうです。

名前空間 qbusiness のアクションを Deny してみた

以下のポリシーをアタッチした IAM エンティティでコンソールを操作してみます。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "qbusiness:*",
            "Resource": "*"
        }
    ]
}

Amazon Q Business の画面に遷移するとアプリケーションの一覧画面になります。アプリケーションをリストする権限がない、とエラーが表示されます。

Amazon_Q_business_error

User: xxx is not authorized to perform: qbusiness:ListApplications with an explicit deny in an identity-based policy - AccessDeniedException - 403 Request ID: 829cbed5-be40-4b1a-ac71-2a37e8c3a797

アプリケーションの作成を試みても、もちろんエラーが発生します。

Amazon_Q___us-east-1_rev

User: xxx is not authorized to perform: qbusiness:CreateApplication on resource: arn:aws:qbusiness:us-east-1:000000000000:application/* with an explicit deny in an identity-based policy - AccessDeniedException - 403 Request ID: 6800eb1b-580c-4a10-820e-e3effb0fc280

サービス名:AWS Network Manager Chat

ここでの AWS Network Manager Chat とは、Amazon Q network troubleshootingの操作に関連する部分を指します。

Amazon Q network troubleshooting にたどり着くには以下が簡単かと思います。

  • Amazon Qのチャットにデフォルトで用意されているWhy can't I SSH to my EC2 instance?という質問を実施する
  • チャットの返答に含まれているリンクを押下する

Amazon_Q_troubleshooting

このように別画面で新たなチャット画面が開きます。

Amazon_Q_network_troubleshooting_-_preview_11

具体的なリソース ID も記述すれば、以下のように VPC Reachability Analyzer の結果もあわせて表示してくれるようです。(画像は公式ドキュメントより引用)

amazon-q-response-screenshot

ちなみに VPC Reachability Analyzer はnetworkmanagerという名前空間に属しています。その拡張としてnetworkmanager-chatが登場した、というのがしっくりきます。

名前空間 networkmanager-chat のアクションを Deny してみた

networkmanager-chatのアクションに関するドキュメントは現時点で見つけられませんでしたが、IAM ポリシーのビジュアルエディタから見るに 7 個が用意されていそうです。

networkmanager-chat_editor

これらを全て拒否した以下のポリシーをアタッチした IAM エンティティで操作してみます。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "networkmanager-chat:*",
            "Resource": "*"
        }
    ]
}

トラブルシュートのチャット画面に遷移した後に画面上部にエラーが表示されました。

Amazon_Q_network_troubleshooting_-_preview_explict_deny

Chat could not be initialized: message: User: xxx is not authorized to perform: networkmanager-chat:ListConversations on resource: arn:aws:networkmanager-chat:us-east-1:000000000000:/conversations with an explicit deny, statusCode: 403

終わりに

Amazon Q に関連するサービスの名前空間を整理してみました。

特にマネジメントコンソールで「Amazon Q」と表現されているサービスの名前空間が実際にはqbusinessであることがややこしいなと感じました。

また、Amazon Q network troubleshooting は VPC Reachability Analyzer の拡張機能である、という位置付けが自分の中でしっくりきました。

これらの情報はプレビュー段階のため、今後変更される可能性があります。参考程度にとどめてください。

以上、 チバユキ (@batchicchi) がお送りしました。

参考