ウォークスルー
このページでは、デモデータのワークフローを 1 本、最初から最後まで動かします。エージェントスキルから生成し、公開し、実行し、途中で上がってくる承認依頼を承認し、結果を確認するところまでを、一度もサインアウトせずに進めます。root でサインインし、なりすましでデモアカウントを順に演じるので、ブラウザのタブ 1 つで済みます。
まずプロバイダを選んでください。このページのプロバイダごとのブロックはすべて、ここでの選択に連動します。
- AWS
- Google Cloud
- Azure
Demo AWS EC2 Launch スキルから EC2 インスタンスを起動します。
Demo GKE Pod Restart スキルから GKE クラスタのワークロードをローリング再起動します。
Demo Azure Key Vault Secret Rotation スキルから Azure Key Vault のシークレットをローテーションします。
事前準備
- デモデータを有効にしてバックエンドが起動している。
rootのパスワードが分かっている。ROOT_PASSWORDか、未設定なら起動時にバックエンドが一度だけログに出した行です(初期投入されるユーザー)。- プロバイダに実際に届く:
- AWS
- Google Cloud
- Azure
シークレット demo-aws-credentials に本物のアクセスキーが入っていること。初回起動前に DEMO_AWS_ACCESS_KEY_ID / DEMO_AWS_SECRET_ACCESS_KEY を設定しておくか、あとから Secrets でシークレットを編集します。実行すると本物の EC2 インスタンスが起動し、終了させるまで課金されます。
アクセスキーの IAM ユーザーには、AMI の解決、ネットワークとキーペアの確認、インスタンスの起動を許すポリシーが必要です。次のポリシーで足ります。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ResolveAmi",
"Effect": "Allow",
"Action": "ssm:GetParameter",
"Resource": "arn:aws:ssm:*::parameter/aws/service/*"
},
{
"Sid": "LookupAndLaunch",
"Effect": "Allow",
"Action": [
"ec2:DescribeImages",
"ec2:DescribeVpcs",
"ec2:DescribeSubnets",
"ec2:DescribeSecurityGroups",
"ec2:DescribeKeyPairs",
"ec2:DescribeInstances",
"ec2:RunInstances",
"ec2:CreateTags"
],
"Resource": "*"
}
]
}
1 つ目のステートメントが読めるのは、AWS が最新の AMI ID を公開しているパブリックパラメータだけで、自分のアカウントのパラメータは読めません。このポリシーではインスタンスを終了できないので、終了は AWS コンソールから自分で行ってください。
シークレット demo-gcp-credentials に、GKE クラスタへ届く身元の Google Cloud 認証情報が入っていること。初回起動前に DEMO_GCP_CREDENTIALS_JSON を設定しておくか、あとから Secrets でシークレットを編集します。プロジェクト、クラスタ、そのリージョン、再起動してよいワークロードを決めておいてください。実行すると本当にローリング再起動されます。
シークレット demo-azure-credentials に本物のサービスプリンシパルが入っていること。初回起動前に DEMO_AZURE_TENANT_ID / DEMO_AZURE_CLIENT_ID / DEMO_AZURE_CLIENT_SECRET を設定しておくか、あとから Secrets でシークレットを編集します。サービスプリンシパルには、Key Vault のシークレットを一覧・書き込みできるロールが必要です。組み込みの Key Vault Secrets Officer ロールはすべてのシークレットの値も読めてしまうので、Microsoft.KeyVault/vaults/secrets/readMetadata/action と Microsoft.KeyVault/vaults/secrets/setSecret/action のデータアクションだけを持つカスタムロールをおすすめします。こうしておけば、エージェントが言いくるめられても値は読めません。アクセスポリシー方式の Key Vault なら、シークレットの権限は List と Set だけを付与します。その Key Vault と、ローテーションしてよいシークレットを決めておいてください。実行するとシークレットの新しいバージョンが本当に書き込まれ、現在のバージョンを読むものはすべて新しい値を使うようになります。
使えるアカウントがない場合は、同梱のツールモックを使えば、プロバイダに届かないまま同じワークフローを最後まで動かせます。その場合はワークフローを draft のまま実行するので、下の公開ステップは飛ばします。
登場人物
| ステップ | AWS | Google Cloud | Azure | ロール |
|---|---|---|---|---|
| ワークフローを生成する | demo-aws-developer | demo-gcp-developer | demo-azure-developer | developer |
| 公開する | demo-aws-reviewer | demo-gcp-reviewer | demo-azure-reviewer | reviewer |
| 実行し、結果を確認する | demo-aws-requester | demo-gcp-requester | demo-azure-requester | requester |
| 依頼を承認する | demo-approver-1 | demo-approver-1 | demo-approver-1 | approver |
以下の各ステップは、Users 一覧の Impersonate で始まり、ヘッダーの「Acting as」チップの Stop で終わります。この停止は省けません。演じている間はそのアカウントのロールに縛られ、どのアカウントもなりすましはできないので、停止するまで Impersonate は出てきません。チャット画面からは、アプリバーの A2Flow ロゴでウェルカムページとサイドバーに戻れます。
1. root でサインインする
- サインイン画面で Username に
rootを入れ、Tenant は空欄のまま(rootはプラットフォーム管理者で、どのテナントにも属しません)、パスワードを入れて Sign in を押します。 - ウェルカムページに着きます。アプリバーのテナントセレクタが、デモデータの入っている Default になっていることを確認してください。ほかが選ばれていたら Default を選びます。
2. developer として、ワークフローを生成する
- 管理サイドバーの Users を開き、developer の行で Impersonate を押します。Impersonate User ダイアログの Impersonate で確定します。ウェルカムページに戻り、ヘッダーのチップに「Acting as
demo-…-developer」と出ます。 - Agent Skills を開きます。並ぶのはこのプロバイダのスキルだけです。ほかのスキルはアクセス制御タグで隠れています。Status が
readyになるまで待ちます。Cloningのうちは一覧を更新してください。それまで Generate workflow は押せません。
Knowledge Bases を開き、AWS EC2 Pricing をクリックします。ソースは ec2-on-demand-pricing.pdf の 1 つで、Not read と表示されています。Read を押し、ステータスが Ready になるまで待ちます。LLM が価格表をページに書き起こしていて、できたページは Pages に並びます。1〜2 分かかります(ナレッジベース)。次の手順では Generate Workflow ダイアログで Select knowledge bases… も押して AWS EC2 Pricing を選んでください。実行のエージェントが価格を調べられるようになります。
- 行の Generate workflow を押します。Workflow Name はそのまま、Prompt に下のプロンプトを貼り、Generate を押します。
- AWS
- Google Cloud
- Azure
申請者から希望のパラメーターと起動日時をヒアリングして、Demo Approversグループの承認を得て、指定された日時にEC2インスタンスを起動する。
インスタンスタイプは以下のいずれかから選んでもらう:
- t4g.nano
- t4g.micro
- t4g.small
- t4g.medium
- t3.micro
- t3a.micro
- c6g.medium
- m6g.medium
- t2.micro
- t4g.large
リージョンは以下のいずれかから選んでもらう:
- us-east-1
- us-east-2
- us-west-2
AMIは申請されたリージョンのAmazon Linux 2023の最新のイメージを使う。
VPCとサブネットとセキュリティグループはデフォルトを使う。
キーペアは作成しない。
AMIとVPCとサブネットのIDは承認依頼前に解決しておく。
指定された日時になるまではインスタンスを起動しない。
インスタンスの費用についての質問にはAWS EC2 Pricingナレッジベースをもとに答え、承認依頼には申請されたインスタンスの月額をそのナレッジベースから引いて含める。
3 つのプレースホルダを、自分のプロジェクト、クラスタ、リージョンに置き換えてください。
<your project name>プロジェクトの<your cluster name>クラスターのワークロードをDemo Approversの承認後に再起動する。
クラスタロケーションは<cluster region>リージョンで、ワークロードの名前空間は実環境から取得したリストから申請者に選んでもらう。
プレースホルダを自分の Key Vault の名前に置き換えてください。
<your vault name> Key VaultのシークレットをDemo Approversの承認後にローテーションする。
Key Vaultのシークレット一覧を取得して、ローテーションするシークレットを申請者に選んでもらう。
新しい値はSecret Value Generatorで生成し、チャットには決して表示しない。
- 新しいワークフローの詳細ページに着きます。ステータスは
generatingです。ページは自分で更新され、1〜2 分でdraftになり、ベルに「draft ready」の通知が出ます。Task Templates を開くと、デザインエージェントが書いたステップが見られます。パラメータを集め、承認を求め、作業し、報告する、という並びです(ワークフローを生成する)。 - 「Acting as」チップの Stop を押します。
3. reviewer として、公開する
- Users で reviewer の行の Impersonate を押し、確定します。
- Workflows を開き、ワークフロー名をクリックします。タスクテンプレートを見ておきます。reviewer は Open design session で設計の会話を読むこともできますが、口は出せません。
- Publish を押します。ステータスが
publishedになり、設計は凍結され、requesterが実行できるようになります(公開する)。 - Stop します。
4. requester として、実行する
- Users で requester の行の Impersonate を押し、確定します。
- Workflows を開き、ワークフローの Run を押します。Run Workflow ダイアログにモックは出ません。公開済みなので、これは本番の申請です。Run を押します。
- ワークフローセッションが開き、エージェントが最初のタスクに取りかかって、プロンプトが申請者に委ねた項目を聞いてきます。答えが決まっている質問はメッセージの中の選択肢として、それ以外は入力欄の上に返答の候補として出ます。
- AWS
- Google Cloud
- Azure
どのインスタンスタイプにするか迷ったら、「us-east-2 で t4g.medium は月いくら? t3.micro と比べて」のように聞いてみてください。エージェントは AWS EC2 Pricing ナレッジベースで価格を調べ、参照したページを示して答えます。
プロンプトの 10 種からインスタンスタイプを、3 つからリージョンを選び、起動日時には数分後の時刻を伝え(ツアーが止まらないように)、インスタンスの名前など、ほかに聞かれたことにも答えます。エージェントはそのリージョンの Amazon Linux 2023 の最新イメージと、デフォルトの VPC とサブネットを調べ、構成と起動日時を要約して承認に回します。
エージェントがクラスタから取ってきた一覧から名前空間を選び、再起動する Deployment か StatefulSet の名前を伝えます。エージェントはそのワークロードを調べて種類を確かめ、対象を要約して承認に回します。
エージェントが Key Vault のシークレット一覧を取得する前に、実行があなたを待ちます。チャット入力の上に、このタスクが質問してくるという案内が出るので、Resume を押します。すると Azure MCP Server が確認を求めます。チャットに「Azure MCP Server asks for confirmation」というカードが出るので、Approve を選んで Accept を押します(MCP サーバーからの確認)。続いて、エージェントが取ってきた一覧からローテーションするシークレットを選びます。エージェントは Key Vault とシークレットを要約して承認に回します。
- 依頼の宛先は Demo Approvers グループで、その下のチャットには「Waiting for a decision from the approver group.」と出ます。申請者には決められません。実行はここで待ちに入ります。
- Stop します。
5. approver として、承認する
- Users で
demo-approver-1の行の Impersonate を押し、確定します。demo-approver-2でも構いません。グループ宛の依頼は最初の判断で決まります。 - ツールバーのベルに未読が 1 件、承認依頼が出ています。クリックすると実行のチャットが開きます。サイドバーの Approvals から行の Open Workflow Session をたどっても同じ場所に着きます。
- 依頼を読みます。エージェントの要約の下の This authorizes に、この判断が許可することになる呼び出しと、その入力の範囲が並びます(依頼が許可する呼び出し)。
- AWS
- Google Cloud
- Azure
AWS MCP Server の、インスタンスを起動する呼び出しです。この呼び出しと、要約にある起動日時と月額を、申請者が選んだ内容と突き合わせてください。イメージ、VPC、サブネットの検索は並びません。依頼の前に済んでいて、承認の要らない呼び出しだからです。
GKE MCP Server の patch_k8s_resource の呼び出しで、申請者が選んだ名前空間とワークロードを指しています。
Azure MCP Server の keyvault_secret_create の呼び出しで、申請者が選んだ Key Vault とシークレットを指しています。新しい値は依頼に含まれません。エージェントが値を生成するのは承認のあとです。
- 判断の前にもっと知りたいことがあれば、チャットに質問を入力して送ります。AWS タブなら、たとえば「平日の営業時間だけ動かしたら月額はいくら?」と聞いてみてください。セッションはあなたの判断を待っているので、Consultation タブが開き、エージェントが依頼までの文脈とリンクされたナレッジベースをもとにそこで答えます(相談セッション)。申請者もこの会話に加われます。終わったら Main タブをクリックして依頼に戻ります。
- 必要なら Comment を書いて、Approve を押します。相談セッションを開いていれば、判断でそれも閉じます。同じチャットで実行が再開し、エージェントが作業を終えると、申請者に結果の確認を求めます。この質問に答えるのは申請者です。承認者には入力欄が読み取り専用で出て、下に「Waiting for the initiator to respond.」と表示されます。
- AWS
- Google Cloud
- Azure
起動日時がまだ来ていなければ、エージェントは起動を待たせたまま、いつ再開するかを 1 行で伝えて一時停止します。その時刻になるとセッションは自動で再開し、エージェントがインスタンスを起動します。チャットを開いておく必要はありません(ワークフローセッション画面)。
エージェントはすぐにワークロードを再起動します。
書き込みは申請者に確認を求めるので、実行は始める前に申請者がチャットに戻るのを待ちます。セッションは Waiting for initiator と表示され、申請者には通知が届きます。
- Stop します。
6. requester に戻って、結果を確認する
- Users でもう一度 requester の行の Impersonate を押し、確定します。
- Workflow Executions を開き、実行の行の Open Workflow Session を押します。
- エージェントは作業の結果を報告して、こちらの返事を待っています。
- AWS
- Google Cloud
- Azure
伝えた起動日時を過ぎていれば、インスタンス ID と状態です。気になれば AWS コンソールでインスタンスを確かめてから、チャットで確認した旨を返します。
見守っていたロールアウトが終わったあとの、置き換わった Pod の数です。チャットで確認した旨を返します。
まず、実行が書き込みの前にあなたを待っています。チャット入力の上の案内で Resume を押します。エージェントが新しい値を生成して書き込みを始めると、Azure MCP Server の確認のカードが出るので、Approve を選んで Accept を押します。そのあとエージェントが新しいバージョンの作成日時を報告します。値そのものは表示されません。Azure MCP Server はバージョン ID を返さないので、必要なら Azure ポータルでシークレットのバージョンを確かめてから、チャットで確認した旨を返します。
- エージェントが要約で締めくくり、最後のタスクが完了し、実行は
completedになり、ベルに完了の通知が出ます。 - Stop します。
終わったら
- AWS
- Google Cloud
- Azure
インスタンスは動いたままで、AWS コンソールで終了させるまで課金されます。
片付けるものはありません。ワークロードは新しい Pod で元のレプリカ数に戻っています。
シークレットの以前のバージョンは有効なまま残っています。シークレットを読むものがすべて新しい値を使うようになったら、Azure ポータルで古いバージョンを無効にしてください。新しい値は Key Vault に届くまでにエージェントの会話を通っているので(デモデータ)、この実行のチャットはシークレットと同じように扱ってください。
この一巡が残した記録のうち、見ておく価値のあるものが 2 つあります。
| 場所 | 見えるもの |
|---|---|
| Audit Logs → Impersonations | いま開いたセッションの全部。誰が誰として、いつ操作したか。上の書き込みはどれもなりすまし先のアカウントに帰属するので、「本当は誰がやったのか」に答えるのはこの記録です(監査証跡) |
| 実行の Tool Invocations ページ | 実行が行ったツール呼び出しと、提示したツール証明書。作業をした呼び出しを解放したのは、あなたが出した承認です(Tool Invocations) |