OpenAI APIを利用してパブリッククラウドの権限要約をしてくれるCLIコマンドを作成した

Genki Hashimoto

2023.7.11

はじめに

Sreake事業部の橋本です。
前回の記事から引き続き、OpenAIのGPTモデルを利用してDevOps、SREの領域でのtext AIの有効活用を考えていきます。

運用の自動化、構築支援などに活用できると嬉しいのですがその辺はpluginの利用がしたくなるところ、残念ながらwaitlist待機中のため評価、要約に活用を絞って考えています(執筆中にfunction call機能が実装されました![^1] gpt3.5でもpluginのような使い方ができるということで期待大)。

今回はドキュメンテーションのヘルプということで、非クラウドエンジニア向けにAWSのIAMロール/GCPのユーザで何ができるのかを要約してくれる機能を作っていこうと思います。

ドキュメンテーションとSRE

SREの文脈でドキュメンテーションについて記載がある本として、SREの探求 19章があげられます。ざっくりと要約すると以下のような内容です。[^2]

  • ドキュメント品質には構造品質と機能品質がある
    • 構造品質: 体裁の正しさや誤字脱字などが無いこと
    • 機能品質: そのドキュメントが書かれた目的を満たしているか(例えば障害対応手順書の場合、担当者が見て障害対応をおこなえれば機能品質が高い)
    • 構造品質は計測しやすく品質指標に使われがち、高いに越したことはないが、本質ではないためドキュメント品質の評価には機能品質を利用する
  • テストと同じようにエンジニアリングワークフローにドキュメントの更新を統合することで品質を維持する
    • コードとドキュメントを同じレポジトリで管理して変更時にドキュメントも一緒に変更しやすくしたり(googleではmarkdownで記載されたこのようなドキュメント群をレンダリングする社内サービスがある)
    • レビューフローにドキュメントを含めたり
  • ドキュメンテーションの価値を周知徹底するようなデータを収集することで管理層、経営層に重要性を理解させるとともにドキュメントの作成者が報われるような仕組みを作る

今回の目標

これを踏まえて今回の目標は以下のように設定しました。

  • 機能品質の定義: パブリッククラウドで作業を行うすべてのユーザ(非エンジニアを含む)がドキュメントを読んで自分が(あるいは作成しているシステムが)利用する権限を把握できる
    • 非エンジニアやクラウドに詳しくない人でも理解できるという点を達成するためにOpenAI APIを利用して権限を自然言語で說明してくれるドキュメントを作成する
  • 権限変更に伴い、ドキュメントも更新される必要がある(繰り返しの実行が可能であり最新の状態にメンテナンスされる)
    • CLIツールでの開発とする(将来的にコンテナ化し、ワークフローへ組み込めるため)
  • IAM権限に関する問い合わせ件数を計測し、少なければ品質を達成しているとする
    • これは今回設定した想定ケースにおける機能品質を説明する上で計測可能な指標の一例です。
      まだ実運用では活用しておらず未実施。

要約の方法

AWSとGCPではIAMの取り扱いが少しことなります。[^3]
以下のような形での要約を目指します。

AWS

AWSでは作業に応じて必要なIAM RoleへのAssume Roleを実施して権限を獲得するケースが多くIAMユーザ等には最低限の権限しかつけていないケースが多いと思われます。
そのためIAM Roleごとにどのような操作が許可されているかをドキュメンテーションしていきます。

GCP

一方でGCPでは基本的にユーザやグループに対して直接権限を付与します。
ですので、現時点でどのような操作が許可されているかを人毎に確認できるようにしていきます。

GCPでは組織、フォルダ、プロジェクト、リソースの単位でIAMポリシーが存在し、左側にある権限は右側に対して同じ権限を有します。そのためプロジェクトだけで見ているとわからない権限も存在します。この課題はAsset Inventoryを利用することで解決出来ます。

AWS編

前提

記事作成用に以下の2つのロールを作成し実際に開発した際の詰まりポイントなどを再現して記載します。

openai-sample-ro-role

AWSマネージドポリシー

  • ReadOnlyAccess

openai-sample-ec2admin-role

AWSマネージドポリシー

  • AmazonEC2FullAccess

インラインポリシー

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:ListStorageLensConfigurations",
                "s3:ListAccessPointsForObjectLambda",
                "s3:GetAccessPoint",
                "s3:PutAccountPublicAccessBlock",
                "s3:GetAccountPublicAccessBlock",
                "s3:ListAllMyBuckets",
                "s3:ListAccessPoints",
                "s3:PutAccessPointPublicAccessBlock",
                "s3:ListJobs",
                "s3:PutStorageLensConfiguration",
                "s3:ListMultiRegionAccessPoints",
                "s3:CreateJob"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::openai-sample-bucket"
        }
    ]
}

全部まとめて投げる

まずはシンプルにすべてのアタッチされたポリシーとインラインポリシーのドキュメントを取得しまるごと要約してもらうようにOpenAI APIをコールしてみます。

promptは以下のとおりです。今回は自然言語化されたドキュメントを生成してほしいのでpromptを日本語で記載しています(英語で日本語を出力してくださいと記載したパターンも試しましたが、たまに英語で返ってきてしまったため)。

# 目的
ロールが行える操作を理解すること。
# 背景
- あなたはAWSアドバイザーAIです。
- ロールに紐づくポリシーによって、ユーザーが行える操作を明示的にまとめたドキュメントを作成したいです。
- ユーザーからポリシードキュメントが提供されます。これはロールに紐づくポリシーのすべてを連結したものです。
# 制約
- 日本語で回答してください。
- ポリシーの要約を箇条書きで記載してください。箇条書き以外の記載は不要です。

ReadOnlyAccessポリシーが巨大なため openai-sample-ro-role はtoken制限超過のエラーとなってしまいました。 openai-sample-ec2admin-role の結果は以下のとおりです。インラインポリシーの方(ポリシー2)は権限を羅列されているだけのようで微妙ですが、結構良さそうですね。
token制限をできる限り回避する方向で改善を進めていきます。

ポリシー1:
- ec2, elasticloadbalancing, cloudwatch, autoscalingに関する全ての操作が許可される。
- ロールにService Linked Roleを作成するためのiam:CreateServiceLinkedRole操作が許可される。
- Service Linked Roleの条件として、以下のサービス名が指定されている:
  - autoscaling.amazonaws.com
  - ec2scheduled.amazonaws.com
  - elasticloadbalancing.amazonaws.com
  - spot.amazonaws.com
  - spotfleet.amazonaws.com
  - transitgateway.amazonaws.com

ポリシー2:
- S3のListStorageLensConfigurations、ListAccessPointsForObjectLambda、GetAccessPoint、PutAccountPublicAccessBlock、GetAccountPublicAccessBlock、ListAllMyBuckets、ListAccessPoints、PutAccessPointPublicAccessBlock、ListJobs、PutStorageLensConfiguration、CreateJobに関する操作が許可される。
- 特定のS3バケット(openai-sample-bucket)に対し、s3に関する全ての操作が許可される。

token制限の回避手段

gpt3.5の場合は最大トークン数制限が4096トークンです。 [^4]
※最大トークン数は入力トークン数と出力トークン数の合計

先程の結果と合わせて、今考えている「IAMロールに紐づくポリシーの要約」では2つのtoken超過パターンが考えられます。

①アタッチされたポリシーが多く、合わせるとtoken制限を超過する
②ポリシー単体が巨大でtoken制限を超過する

token制限の中で大きなドキュメントを扱う手法としては大きく2パターンがあります。

再帰的要約[^5]

  • 要約したいドキュメントの先頭からtoken制限にかからない点までを要約するタスクを実行
  • その後要約した内容と次にtoken制限にかからない点までを要約するタスクを実行
  • すべてのドキュメントの要約が完了するまで繰り返す

メリット: 文章として1つのドキュメントが出力される
デメリット: 要約しているためどうしても欠落している情報がある

質問を分割して結合する

  • 質問をtoken制限がかからない単位で分割する
  • それぞれについて要約するタスクを実行
  • すべての結果を連結する

メリット: 情報の欠落は少ない
デメリット: 文脈などの要素は個々に要約しているため、考慮できない。結合するため整合性が取れるような出力となるように調整する必要がある

①についてはもとから独立しているポリシードキュメントを分割するため相互に文脈などはなく、問題なさそうなので後者の方向性でいきます。

②単体のポリシードキュメントでのtoken制限超過ですが、さらにstatement単位で分割するなどの方向性になると思います。しかし、分割単位を考え出すときりがないので今回はひとまず自作ポリシーについては諦め、AWS管理ポリシーについてはgpt3.5に知識として含まれていることをChatGPT UI上でいくつか確認し名前を渡して行える操作を要約してもらう方向性としました。

ポリシー毎に投げる&長い管理ポリシーは名前を渡すように

ポリシードキュメントを渡す場合とポリシー名を渡す場合で2つのpromptを作成して実際に実行してみます。このとき、出力フォーマットを揃えないとドキュメントとして分かりづらくなるため箇条書きで記載することを制約として明記します。違うところは入力データを説明している背景の3つ目のみです。

<!-- ポリシードキュメントを渡す場合のprompt -->
# 目的
ロールが行える操作を理解すること。
# 背景
- あなたはAWSアドバイザーAIです。
- ロールに紐づくポリシーによって、ユーザーが行える操作を明示的にまとめたドキュメントを作成したいです。
- ユーザーからIAMポリシードキュメントが与えられます。これはロールに紐づくポリシーのうちの1つです。
- 全てのポリシーをまとめて渡すとトークン数の制限に達してしまうため、別のリクエストとマージして一つのドキュメントを完成させます。今回のリクエストはそのうちの一つです。
# 制約
- 日本語で回答してください。
- ポリシーの要約を箇条書きで記載してください。これは他の問題をまとめるためのドキュメントとして利用されます。箇条書き以外の記載は不要です。
<!-- ポリシー名を渡す場合のprompt -->
# 目的
ロールが行える操作を理解すること。
# 背景
- あなたはAWSアドバイザーAIです。
- ロールに紐づくポリシーによって、ユーザーが行える操作を明示的にまとめたドキュメントを作成したいです。
- ユーザーからAWS定義済みポリシー名が与えられます。これはロールに紐づくポリシーのうちの1つです。
- 全てのポリシーをまとめて渡すとトークン数の制限に達してしまうため、別のリクエストとマージして一つのドキュメントを完成させます。今回のリクエストはそのうちの一つです。
# 制約
- 日本語で回答してください。
- ポリシーの要約を箇条書きで記載してください。これは他の問題をまとめるためのドキュメントとして利用されます。箇条書き以外の記載は不要です。

処理内容をシーケンス図にまとめると以下のような形です。

結果は以下の通りでした。悪くないですが、記載方法にブレが大きく1つのドキュメントとしてみたときに一貫性が無いように思えます。

openai-sample-ro-role

- リソースへの読み取りアクセスのみを許可するポリシー
- 多くのAWSサービスに対して読み取りアクセスが許可される
- AWS Management ConsoleやAWS CLI、APIを使用して読み取りアクセスができる
- データの変更やAWS上での操作は許可されない

openai-sample-ec2admin-role

- EC2に関係する全ての操作を許可。
- Elastic Load Balancingに関係する全ての操作を許可。
- CloudWatchに関係する全ての操作を許可。
- Auto Scalingに関係する全ての操作を許可。
- サービス連携ロールを作成するIAM API操作を、特定のサービスのみ許可する。

- S3バケットの一覧を取得する
- S3バケットのパブリックアクセスブロックを設定する
- S3バケットのパブリックアクセスブロックを取得する
- S3バケットの一覧を取得する
- S3バケットのアクセスポイントを一覧表示する
- S3バケットのアクセスポイントを取得する
- S3バケットのアクセスポイントのパブリックアクセスブロックを設定する
- S3バケットのアクセスポイントの一覧を取得する
- S3バケットのマルチリージョンアクセスポイントの一覧を取得する
- S3バケットのストレージレンズ構成を作成する
- S3バケットのジョブを作成する
- 特定のS3バケット(arn:aws:s3:::openai-sample-bucket)に対して、S3バケットの全ての操作を許可する。

出力例を示す

OpenAIの公式ドキュメントに存在する”GPT Best Practice”では出力のフォーマットをより明確にするには質問と回答の例を渡すことが有効だとあります。[^6] これはfew-shot promptiingと呼ばれるテクニックです。

token数制限を考えると入力可能なサイズが小さくなってしまう点がデメリットではありますが適用していきます(16kモデルの登場によりある程度余裕が生まれた)。
こちらについてもポリシー名を渡す場合とポリシードキュメントを渡す場合の2つの例を作成しました。

またフォーマットをきれいにするためにプログラム側でポリシー名を出力するようにし、出力結果は以下のようになりました。かなり表現がそろって読みやすくなりましたね!!

openai-sample-ro-role

[ReadOnlyAccess]
- すべてのリソースで許可
  - AWSリソースの読み取り、一覧、参照

openai-sample-ec2admin-role

[AmazonEC2FullAccess]
- EC2のすべての操作
- Elastic Load Balancingのすべての操作
- CloudWatchのすべての操作
- Auto Scalingのすべての操作
- IAMのサービスリンクロールの作成(条件付き)
  - サービス名が以下のいずれかである場合
    - autoscaling.amazonaws.com
    - ec2scheduled.amazonaws.com
    - elasticloadbalancing.amazonaws.com
    - spot.amazonaws.com
    - spotfleet.amazonaws.com
    - transitgateway.amazonaws.com

[openai-sample-inline-policy]
- すべてのリソースで許可
  - S3のストレージレンズ、アクセスポイント、アカウント設定、ジョブの一覧、作成、更新、参照
- 特定のリソースで許可(バケット名: openai-sample-bucket)
  - S3バケットに対するすべての操作

参考: Chat APIのロールについて

OpenAIのChat APIではメッセージは以下のような構造データです。Roleにはsystem, user, assistantの3種類があります。[^7]
本記事ではpromptと記載していたものを最初にsystemロールとして記載し、例としてuser, assistantのペアを渡した上で質問を行っています。

[
	{
		Role: (system or user or assistant)
		Content: (文章)
	},
	・
	・
	・
]
system背景などの設定内容
user利用者の質問
assistantAIからの返答

できあがったもの

実行結果の動画です。1ポリシーごとにOpenAIのAPIを利用しており、今回は3ポリシー対象のため概ね1回あたりのレスポンスは20秒でした。紐づくポリシーが多ければ多いほどだいぶ時間はかかってしまいます。。

最後のmarkdownは書き出しオプションに対応しているためポリシーを管理するterraform等にpipelineとして紐付けることで更新のたびにドキュメントも一緒に更新されるような運用もできます。表記が出力のたびにぶれることを懸念していましたがtumperetureを0に設定すると試した範囲では出力の変化はみられず、変更箇所のみが内容変わることが期待できます[^8]。

GCP編

前提

参考としてテスト用のユーザ、プロジェクトを作成し、以下のような権限をつけた際の実行結果を利用していきます。

AWSと同じ形で実装

AWS編の知見を活かして同じような処理体型をまずは作っていきます。
Asset Inventoryで特定のユーザに紐づくPolicyを一覧化し、それぞれのロールについての要約を実施していきます。 token制限を超過している場合はOpenAIに知識としてあるはずという期待のもと、ロール名のみからの要約を生成してもらいます。

できあがったもの

課題点

あまりにも長いものだとうまく行かないケースがある

16kモデルが執筆中に登場したためこれまでtoken数の都合で名前から推測してもらっていたものについてもより精度の高い要約ができるのでは?とおもいいくつか試してみたのですが、特にGCPではきれいな出力にならないケースが多かったです。

GCPはroleから取れる情報が完全に一覧化されたPermissionsのみでありAWSのポリシードキュメントのようなワイルドカード(*)でまとめた形のドキュメントを取得できません。それによって過度に丸められたり細かすぎたりとそれっぽい要約が難しいのかなと推察します(人間として考えても与えられた情報の中でAWSでは全ての操作というワードが出せるがGCPだと出せない)。

例1: compute.Adminとcompute.NetworkAdmin

前者は丸めすぎ、後者は細かすぎて自然言語化した意味があまりない例。

- Compute Engine インスタンスの作成、削除、更新、一覧、取得が可能です。また、ディスクの操作やネットワークの設定も行えます。
- ネットワークの作成、削除、更新、一覧、取得が可能です。また、ファイアウォールポリシーやルートの設定も行えます。
- プロジェクトの基本情報を取得できます。
- サービスの利用状況や、クォータの情報を取得できます。
- Compute Engine のアクセラレータタイプの取得と一覧表示が可能です。
- Compute Engine のアドレスの作成、削除、取得、一覧表示が可能です。
- Compute Engine のオートスケーラーの取得と一覧表示が可能です。
- Compute Engine のバックエンドバケットの作成、削除、取得、一覧表示が可能です。
- Compute Engine のバックエンドサービスの作成、削除、取得、一覧表示が可能です。
- Compute Engine のディスクのタグの一覧表示が可能です。
- Compute Engine の外部VPNゲートウェイの作成、削除、取得、一覧表示が可能です。
- Compute Engine のファイアウォールポリシーとファイアウォールの取得と一覧表示が可能です。
- Compute Engine のフォワーディングルールの作成、削除、取得、一覧表示が可能です。
- Compute Engine のグローバルアドレスの作成、削除、取得、一覧表示が可能です。
- Compute Engine のグローバルフォワーディングルールの作成、削除、取得、一覧表示が可能です。
- Compute Engine のグローバルネットワークエンドポイントグループの取得と一覧表示が可能です。
- Compute Engine のグローバルオペレーションの取得と一覧表示が可能です。
- Compute Engine のグローバルパブリックデリゲートプレフィックスの削除、取得、一覧表示が可能です。
- Compute Engine のヘルスチェックの作成、削除、取得、一覧表示が可能です。
- Compute Engine のHTTPヘルスチェックの作成、削除、取得、一覧表示が可能です。
- Compute Engine のHTTPSヘルスチェックの作成、削除、取得、一覧表示が可能です。
- Compute Engine のイメージのタグの一覧表示が可能です。
- Compute Engine のインスタンスグループマネージャーの取得と一覧表示が可能です。
- Compute Engine のインスタンスグループの取得と一覧表示が可能です。
- Compute Engine のインスタンスの取得と一覧表示が可能です。
- Compute Engine のインターコネクトアタッチメントの作成、削除、取得、一覧表示が可能です。
- Compute Engine のインターコネクトロケーションの取得と一覧表示が可能です。
- Compute Engine のインターコネクトリモートロケーションの取得と一覧表示が可能です。
- Compute Engine のインターコネクトの作成、削除、取得、一覧表示が可能です。
- Compute Engine のマシンタイプの取得と一覧表示が可能です。
- Compute Engine のネットワークアタッチメントの作成、削除、取得、一覧表示が可能です。
- Compute Engine のネットワークエンドポイントグループの取得と一覧表示が可能です。
- Compute Engine のネットワークのアクセス権限の取得が可能です。
- Compute Engine のパケットミラーリングの取得と一覧表示が可能です。
- Compute Engine のプロジェクトの基本情報の取得と一覧表示が可能です。
- Compute Engine のパブリックデリゲートプレフィックスの削除、取得、一覧表示が可能です。
- Compute Engine のリージョンバックエンドサービスの作成、削除、取得、一覧表示が可能です。
- Compute Engine のリージョンファイアウォールポリシーの取得と一覧表示が可能です。
- Compute Engine のリージョンヘルスチェックサービスの作成、削除、取得、一覧表示が可能です。
- Compute Engine のリージョンヘルスチェックの作成、削除、取得、一覧表示が可能です。
- Compute Engine のリージョンネットワークエンドポイントグループの取得と一覧表示が可能です。
- Compute Engine のリージョン通知エンドポイントの作成、削除、取得、一覧表示が可能です。
- Compute Engine のリージョンオペレーションの取得と一覧表示が可能です。
- Compute Engine のリージョンセキュリティポリシーの取得と一覧表示が可能です。
- Compute Engine のリージョンSSL証明書の取得と一覧表示が可能です。
- Compute Engine のリージョンSSLポリシーの作成、削除、取得、一覧表示が可能です。
- Compute Engine のリージョンターゲットHTTPプロキシの作成、削除、取得、一覧表示が可能です。
- Compute Engine のリージョンターゲットHTTPSプロキシの作成、削除、取得、一覧表示が可能です。
- Compute Engine のリージョンターゲットTCPプロキシの作成、削除、取得、一覧表示が可能です。
- Compute Engine のリージョンURLマップの作成、削除、取得、一覧表示が可能です。
- Compute Engine のリージョンURLマップの使用が可能です。
- Compute Engine のリージョンVPNゲートウェイの作成、削除、取得、一覧表示が可能です。
- Compute Engine のリージョンVPNトンネルの作成、削除、取得、一覧表示が可能です。
- Compute Engine のルーターの作成、削除、取得、一覧表示が可能です。
- Compute Engine のルーターの取得と一覧表示が可能です。
- Compute Engine のルートの作成、削除、取得、一覧表示が可能です。
- Compute Engine のセキュリティポリシーの取得と一覧表示が可能です。
- Compute Engine のサービスアタッチメントの作成、削除、取得、一覧表示が可能です。
- Compute Engine のサービスアタッチメントの取得と一覧表示が可能です。
- Compute Engine のサービスアタッチメントの更新が可能です。
- Compute Engine のサービスアタッチメントの使用が可能です。
- Compute Engine のスナップショットのタグの一覧表示が可能です。
- Compute Engine のSSL証明書の取得と一覧表示が可能です。
- Compute Engine のSSLポリシーの作成、削除、取得、一覧表示が可能です。
- Compute Engine のサブネットの作成、削除、取得、一覧表示が可能です。
- Compute Engine のサブネットの拡張IP CIDR範囲の変更が可能です。
- Compute Engine のサブネットの取得と一覧表示が可能です。
- Compute Engine のターゲットgRPCプロキシの作成、削除、取得、一覧表示が可能です。
- Compute Engine のターゲットHTTPプロキシの作成、削除、取得、一覧表示が可能です。
- Compute Engine のターゲットHTTPSプロキシの作成、削除、取得、一覧表示が可能です。
- Compute Engine のターゲットTCPプロキシの作成、削除、取得、一覧表示が可能です。
- Compute Engine のターゲットVPNゲートウェイの作成、削除、取得、一覧表示が可能です。
- Compute Engine のターゲットVPNゲートウェイの取得と一覧表示が可能です。
- Compute Engine のターゲットVPNゲートウェイの使用が可能です。
- Compute Engine のURLマップの作成、削除、取得、一覧表示が可能です。
- Compute Engine のURLマップの使用が可能です。
- Compute Engine のVPNゲートウェイの作成、削除、取得、一覧表示が可能です。
- Compute Engine のVPNゲートウェイの取得と一覧表示が可能です。
- Compute Engine のVPNトンネルの作成、削除、取得、一覧表示が可能です。
- Compute Engine のVPNトンネルの取得と一覧表示が可能です。
- Network Connectivity の内部範囲の作成、削除、取得、一覧表示が可能です。
- Network Connectivity の内部範囲の取得と一覧表示が可能です。
- Network Connectivity の操作のキャンセルと削除が可能です。
- Network Connectivity の操作の取得と一覧表示が可能です。
- Network Connectivity のポリシーベースのルートの作成、削除、取得、一覧表示が可能です。
- Network Connectivity のポリシーベースのルートの取得と一覧表示が可能です。
- Network Security の認可ポリシーの作成、削除、取得、一覧表示が可能です。
- Network Security の認可ポリシーの取得と一覧表示が可能です。
- Network Security のクライアントTLSポリシーの作成、削除、取得、一覧表示が可能です。
- Network Security のクライアントTLSポリシーの取得と一覧表示が可能です。
- Network Security のゲートウェイセキュリティポリシーの作成、削除、取得、一覧表示が可能です。
- Network Security のゲートウェイセキュリティポリシーの取得と一覧表示が可能です。
- Network Security のゲートウェイセキュリティポリシーの更新が可能です。
- Network Security のゲートウェイセキュリティポリシーの使用が可能です。
- Network Security のゲートウェイセキュリティポリシールールの作成、削除、取得、一覧表示が可能です。
- Network Security のゲートウェイセキュリティポリールールの取得と一覧表示が可能です。
- Network Security のゲートウェイセキュリティポリールールの更新が可能です。
- Network Security のゲートウェイセキュリティポリールールの使用が可能です。
- Network Security のロケーションの取得と一覧表示が可能です。
- Network Security のロケーションの一覧表示が可能です。
- Network Security の操作のキャンセルと削除が可能です。
- Network Security の操作の取得と一覧表示が可能です。
- Network Security のサーバーTLSポリシーの作成、削除、取得、一覧表示が可能です。
- Network Security のサーバーTLSポリシーの取得と一覧表示が可能です。
- Network Security のサーバーTLSポリシーの更新が可能です。
- Network Security のサーバーTLSポリシーの使用が可能です。
- Network Security のTLS検査ポリシーの作成、削除、取得、一覧表示が可能です。
- Network Security のTLS検査ポリシーの取得と一覧表示が可能です。
- Network Security のTLS検査ポリシーの更新が可能です。
- Network Security のTLS検査ポリシーの使用が可能です。
- Network Security のURLリストの作成、削除、取得、一覧表示が可能です。
- Network Security のURLリストの取得と一覧表示が可能です。
- Network Security のURLリストの更新が可能です。
- Network Security のURLリストの使用が可能です。
- Network Services のエンドポイント構成セレクターの作成、削除、取得、一覧表示が可能です。
- Network Services のエンドポイント構成セレクターの取得と一覧表示が可能です。
- Network Services のエンドポイント構成セレクターの更新が可能です。
- Network Services のエンドポイント構成セレクターの使用が可能です。
- Network Services のエンドポイントポリシーの作成、削除、取得、一覧表示が可能です。
- Network Services のエンドポイントポリシーの取得と一覧表示が可能です。
- Network Services のエンドポイントポリシーの更新が可能です。
- Network Services のエンドポイントポリシーの使用が可能です。
- Network Services のゲートウェイの作成、削除、取得、一覧表示が可能です。
- Network Services のゲートウェイの取得と一覧表示が可能です。
- Network Services のゲートウェイの更新が可能です。
- Network Services のゲートウェイの使用が可能です。
- Network Services のgRPCルートの作成、削除、取得、一覧表示が可能です。
- Network Services のgRPCルートの取得と一覧表示が可能です。
- Network Services のgRPCルートの更新が可能です。
- Network Services のgRPCルートの使用が可能です。
- Network Services のHTTPフィルターの作成、削除、取得、一覧表示が可能です。
- Network Services のHTTPフィルターの取得と一覧表示が可能です。
- Network Services のHTTPフィルターの更新が可能です。
- Network Services のHTTPフィルターの使用が可能です。
- Network Services のHTTPルートの作成、削除、取得、一覧表示が可能です。
- Network Services のHTTPルートの取得と一覧表示が可能です。
- Network Services のHTTPルートの更新が可能です。
- Network Services のHTTPルートの使用が可能です。
- Network Services のHTTPフィルターの作成、削除、取得、一覧表示が可能です。
- Network Services のHTTPフィルターの取得と一覧表示が可能です。
- Network Services のHTTPフィルターの更新が可能です。
- Network Services のHTTPフィルターの使用が可能です。
- Network Services のロケーションの取得と一覧表示が可能です。
- Network Services のロケーションの一覧表示が可能です。
- Network Services の操作のキャンセルと削除が可能です。
- Network Services の操作の取得と一覧表示が可能です。
- Network Services のサービスバインディングの作成、削除、取得、一覧表示が可能です。
- Network Services のサービスバインディングの取得と一覧表示が可能です。
- Network Services のサービスバインディングの更新が可能です。
- Network Services のTCPルートの作成、削除、取得、一覧表示が可能です。
- Network Services のTCPルートの取得と一覧表示が可能です。
- Network Services のTCPルートの更新が可能です。
- Network Services のTCPルートの使用が可能です。
- Network Services のTLSルートの作成、削除、取得、一覧表示が可能です。
- Network Services のTLSルートの取得と一覧表示が可能です。
- Network Services のTLSルートの更新が可能です。
- Network Services のTLSルートの使用が可能です。
- プロジェクトの基本情報の取得と一覧表示が可能です。
- プロジェクトの一覧表示が可能です。
- Service Directory のネームスペースの作成、削除、取得、一覧表示が可能です。
- Service Directory のサービスの作成、削除、取得、一覧表示が可能です。
- Service Networking の操作の取得と一覧表示が可能です。
- Service Networking のサービスのピアリングの追加が可能です。
- Service Networking のピアリングされたDNSドメインの作成が可能です。
- Service Networking の接続の削除が可能です。
- Service Networking のピアリングされたDNSドメインの削除が可能です。
- Service Networking のVPCサービスコントロールの無効化が可能です。
- Service Networking のVPCサービスコントロールの有効化が可能です。
- Service Networking のサービスの取得と一覧表示が可能です。
- Service Networking のピアリングされたDNSドメインの一覧表示が可能です。
- Service Usage のクォータの取得が可能です。
- Service Usage のサービスの取得と一覧表示が可能です。
- Traffic Director のネットワークの設定の取得が可能です。
- Traffic Director のネットワークのメトリクスの報告が可能です。

例2: (GCP)roles/iam.SecurityAdmin

そもそも断られる例。

申し訳ありませんが、提供されたロールの概要をまとめることはできません。ロールの目的や権限については、GCPの公式ドキュメントを参照してください。

最後に

今回は機能品質を満たすためのドキュメント作成支援という目的でAWS/GCPで行える操作を要約する機能を作成してみました。
前回の作図タスクよりも実用性を感じられる結果が得られました。テキストデータの要約というタスクには非常に使えそうですね。引き続き設計・運用効率化・SREの文脈で活用の道を探っていきます。

参考情報

[^1] https://openai.com/blog/function-calling-and-other-api-updates
[^2] SREの探求様々な企業におけるサイトリライアビリティエンジニアリングの導入と実践, 19章(p.341-361)
[^3] https://ts223.hatenablog.com/entry/note/iam-aws-gcp
[^4] https://platform.openai.com/docs/models/gpt-3-5
[^5] https://tech.uzabase.com/entry/2023/03/15/120000
[^6]https://platform.openai.com/docs/guides/gpt-best-practices/tactic-provide-examples
[^7]https://platform.openai.com/docs/guides/gpt
[^8] 前回の記事では出力の度にブレがありましたがgo-openaiの実装上tempuretureの指定は0ではなく限りなく0に近いfloat値が望ましい値であったためでした。今回はそのように設定して出力ブレがすくないことを確認できました。参考 issue: https://github.com/sashabaranov/go-openai/issues/9

ブログ一覧へ戻る

お気軽にお問い合わせください

SREの設計・技術支援から、
SRE運用内で使用する
ツールの導入など、
SRE全般についてご支援しています。

資料請求・お問い合わせ