6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Amazon Q Developer Pro を組織で使う際の設定あれこれ

Last updated at Posted at 2024-11-27

はじめに

Amazon Q Developerは、開発者が AWS アプリケーションをより効率的に理解、構築、拡張、運用できるようするための AI アシスタントおよびコードジェネレーターです。

Amazon Q Developer は無料枠 (Free Tier) とユーザー数課金の有償版 (Pro Tier) 2 種類の価格帯で提供されます。Pro 版を検証する機会があったので組織レベルで使う際の必要な設定を本記事でまとめます。Amazon Q Developer が提供する機能そのものには触れません。

AWS Organization 関連の設定

AI サービスオプトアウトポリシー

設定対象: 管理アカウント

概要

生成 AI を業務利用するためのルールとして、サービスの利用データを AI の学習に使用させないことを前提としている企業も多いのではないでしょうか。

Amazon Q Developer Pro を使用している場合は、ユーザーデータがサービスの改善に使用されることはありません。無料枠の場合は Amazon Q への質問や、Q が生成するレスポンスとコードなどがサービス改善に使用される可能性があります。

AWS Organizations で AI サービスオプトアウトポリシーを設定すると組織内のメンバーアカウントに対し、ユーザーコンテンツの保存と利用を一律オプトアウトできます。

AI サービスオプトアウトポリシーでサポートされているサービスのリストは以下に記載があります。

  • Amazon CodeWhisperer (now part of Amazon Q Developer)
  • Amazon Q

の記載がありますね。
ケースによりますが、必ずしも全ユーザーが Pro プランを契約するわけではなく、無料枠を利用するユーザーもいることを考えるとオプトアウトは設定しておくべきでしょう。

設定方法

AWS Organizations のコンソールからポリシー→ AI サービスのオプトアウトポリシーをクリックします。

image.png

進んだ画面で「AI サービスのオプトアウトポリシーを有効にする」をクリックします。

image.png

ここではすべてのサービスからオプトアウトをクリックします。

image.png

image.png

これにより現在サポートするサービスおよび将来的に追加されるすべてのサービスにについてオプトアウトをおこなうカスタマー管理ポリシー OptOutFromAllAIServces が作成され、組織の Root にアタッチされます。

image.png

OptOutFromAllServices
{
  "services": {
    "@@operators_allowed_for_child_policies": [
      "@@none"
    ],
    "default": {
      "@@operators_allowed_for_child_policies": [
        "@@none"
      ],
      "opt_out_policy": {
        "@@operators_allowed_for_child_policies": [
          "@@none"
        ],
        "@@assign": "optOut"
      }
    }
  }
}

ポリシーは特殊な文法になっていますが、以下を押さえることで記載内容が理解できると思います。

  • @@operators_allowed_for_child_policies: ["@@none"] で子ポリシーでのポリシー上書きを禁止します
    • services セクション: 個々のサービスに対して、子ポリシーが新しいセクションを追加することを防いでいます
    • services.default セクション: 子ポリシーで opt_out_policy 以外の新しいセクションを追加することを防いでいます
    • services.default.opt_out_policy セクション: 子ポリシーが outOut 設定の値を変更したり、設定を追加したりすることを防ぎます
  • オプトアウトは @@assign 演算子を使用して指定します

サービス毎にポリシーをカスタマイズしたい場合などはドキュメントを参照ください。

AI サービスオプトアウトポリシーでオプトアウトできるのは、マネジメントコンソール、モバイルアプリ、AWS ウェブサイト、AWS Chatbot に限定されます。

無料プランにおける IDE でのデータ共有をオプトアウトするには、利用者ごとに利用者自身で設定をおこなう必要があります。組織の管理者がまとめて管理することはできません。手順はエディタごとに異なるため以下のドキュメントを参照してください。

信頼されたアクセスの有効化

設定対象: 管理アカウント

信頼されたアクセスとは特定の AWS サービスが、ユーザーに代わって組織およびそのメンバーアカウントで特定のタスクを実行できるようにする機能です。

Amazon Q Developer Pro は、信頼されたアクセスを使用して、組織の管理アカウントで行われた設定を同じ組織のメンバーアカウントと共有します。

これにより組織の管理者が組織全体のサブスクリプション利用状況を確認できるようになったり、Amazon Q Customizations による提案のカスタマイズをすべてのメンバーアカウントに対して有効化できるようになります。

信頼されたアクセスの有効化は後述の Amazon Q Developer 関連の設定の中でおこなうため、ここでは手順を割愛します。

AWS IAM Identity Center 関連の設定

インスタンスタイプの選択

設定対象: 管理アカウント

Amazon Q Developer Pro は IAM Identity Center によるユーザー管理が必須です。組織インスタンスまたはアカウントインスタンスのどちらでも利用が可能ですが、本記事では組織インスタンスの利用を前提とします。IAM Idnetity Center 自体の設定方法は割愛します。

identity-aware console sessionsの有効化

Identity-aware console sessions は現在 Amazon Q Developer Pro との連携でのみサポートされている機能です。追加のユーザーコンテキストを提供することによりエクスペリエンスがパーソナライズされます。

ユーザーが Amazon Q Developer Pro サブスクリプションを通じて Amazon Q にアクセスするにはこの機能を必ず有効化する必要があります。

有効化しない場合、マネジメントコンソールや AWS ウェブサイトから Amazon Q Developer Pro の機能を利用することはできません。

組織インスタンスの設定が完了している状態で Amazon Q サブスクリプションコンソールの Getting started を開くと、Identity-aware console sessions の有効化が促されますので、Enable をクリックして有効化します。

image.png
image.png

以下のように表示されれば設定完了です。

image.png

サブスクリプション関連の設定

ユーザーのサブスクライブ

設定対象: 管理アカウントまたはメンバーアカウント

Amazon Q サブスクリプションコンソールで Amazon Q Developer Pro に登録する IAM Identity ユーザーを選択できます。

image.png

初回のユーザー割り当て時に IAM Identity Center のマネージドアプリケーションインスタンスが作成される旨のメッセージが表示されます。また Amazon Q Developer の設定をメンバーアカウントと共有するかも選択することができます。

image.png

ウィザードに従ってユーザーまたはグループをサブスクライブします。

image.png

サブスクリプションの作成に成功したことを確認します。グループ単位で割り当てた場合、反映まで最大24時間かかるケースもあるようです。

image.png

サブスクリプションが割り当てられたユーザーはコンソール上の Amazon Q が Pro Tier で表示されます。

image.png

サブスクリプションの割り当ては、組織の管理アカウントに限らず各メンバーアカウントで実施できます。

サブスクリプション表示設定

設定対象: 管理アカウント

デフォルトでは管理アカウントも自アカウントで登録されたサブスクリプションしか確認することができません。この設定により管理アカウントで組織内のすべてのサブスクリプションの利用状況を参照できるようになります。

Amazon Q サブスクリプションコンソールの Settings → Subscription view settings または Amazon Q Developer コンソールの Dashboad からサブスクリプションの表示設定を有効にします。

image.png

image.png

サブスクリプションの表示設定を On にすることで AWS Organizations と Amazon Q の信頼されたアクセスが有効化されます。

image.png

サブスクリプションの表示設定が on になると、組織全体の登録状況を確認できます。また CSV 形式のレポートもダウンロード可能です。

image.png

Amazon Q Developer の関連設定

前提

アカウント内に 1 名以上のサブスクライブユーザーがいないと Amazon Q Developer コンソールで設定をおこなうことができません。

これは管理アカウントの場合でも同様で、アカウント内に Pro プランのユーザーがいない場合は Subscribe を促され、設定画面に遷移できません。Subscribe はメンバーアカウントで管理したい場合もあるかと思うので若干不便さを感じますね。

image.png

KMS キーの設定

設定対象: 管理アカウントおよびメンバーアカウント

Amazon Q Developer で以下のような機能を使用する際、ユーザーの入力するデータは AWS 管理の S3 や DynamoDB に一時的に保管されます。デフォルトでは AWS 所有のキーによってデータが暗号化されますが、Developer Pro ではカスタマーマネージドキーを使用することができます。

  • Chat in the AWS console
  • Diagnosing AWS console errors
  • Customizations
  • Agent for software development
  • Agent for code transformation
  • Security scans

Amazon Q Developer コンソールの Settings → Amazon Q Developer account details からデータ暗号化のための KMS キーをカスタマイズできます。組織のポリシーに応じて設定しましょう。

image.png

設定する KMS キーには以下のようなキーポリシーが設定されている必要があります。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "QKMSDecryptGenerateDataKeyPermissions",
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey",
        "kms:GenerateDataKeyWithoutPlaintext",
        "kms:ReEncryptFrom",
        "kms:ReEncryptTo"
      ],
      "Resource": [
        "arn:aws:kms:{{region}}:{{account_id}}:key/[[key_id]]"
      ],
      "Condition": {
        "StringLike": {
            "kms:ViaService": [
                "q.{{region}}.amazonaws.com"
            ]
        }
      }
    }
  ]
}

プロンプトのログ記録

設定対象: 管理アカウント

概要

監査や分析などのために Amazon Q Developer のログ記録を有効にすることができます。チャットやインラインコード入力を使用するとリクエストパラメータとレスポンスパラメータの両方が記録されます。Amazon Q Agent for Software Development はリクエストパラメータのみが記録されます。

こちらも組織のポリシーに応じて設定を検討します。

ログ記録用バケットの前提条件

IAM Identity Center のホームリージョンに関係なく、ログ記録用のバケットはバージニア北部リージョンに作成する必要があります。

また次のようなバケットポリシーを設定します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "QDeveloperLogsWrite",
            "Effect": "Allow",
            "Principal": {
                "Service": "q.amazonaws.com"
            },
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::bucketName/prefix/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "accountId"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:codewhisperer:region:accountId:*"
                } 
            }
        }
    ]
}

設定方法

Amazon Q Developer コンソールの Settings → Preference からログ記録を有効化できます。

image.png

保存先の S3 location を入力して変更を保存します。

image.png

ダッシュボードの有効化

設定対象: 管理アカウントおよびメンバーアカウント
組織の管理アカウントでは Pro プランのユーザーの利用状況をデータ化したダッシュボード機能が提供されます。ダッシュボーではコード提案をどのくらいの頻度で受け入れているかを示す承認率などのデータを確認できます。

Amazon Q Developer コンソールの Dashboard または Settings → Amazon Q Developer usage activity から機能を有効化できます。

image.png

Enable usage dashboard for this account を有効化して設定を保存します。

image.png

データが空で恐縮ですが、以下のようなダッシュボードが確認できるようになります。

image.png
image.png

ユーザーアクティビティレポートの有効化

設定対象: 管理アカウントおよびメンバーアカウント

組織内の Pro プランユーザーのアクティビティを収集し、日次で使用状況を CSV 出力することができます。レポートで確認できる情報については以下をご参照ください。

Amazon Q Developer コンソールの Dashboard または Settings → Amazon Q Developer usage activity から機能を有効化できます。

Collect granular metrics per user を有効化して、配信先の S3 location を指定します。

image.png

プロンプトログと同様、バケットはバージニア北部リージョンに作成する必要があります。

プロンプトログのバケットとは異なるバケットを用意することが推奨されています。

Prerequisite
(Optional but recommended) Be different from the bucket you might be using for prompt logging.

以上です。他にもあれば随時追加していきたいと思います。
参考になれば幸いです。

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?