OptSight と連携する AWS アカウントを運用している事業者 (ASP・運用委託先) や情報システム部門の方が、 IAM ロールを作成する前に確認する内容をまとめた資料です。このページの URL を、そのまま審査資料としてお使いいただけます。
権限の一覧 (3 章) は、現在配布している CloudFormation テンプレートから自動で表示しています。 テンプレートを改版した場合も、この資料が古いまま残ることはありません。
1. 作成されるもの
| 作成されるリソース | IAM ロール 1 つだけです (名前の例: OptSightReadOnlyRole-3f2a9c。末尾は連携ごとに異なります)。サーバー・ネットワーク・ストレージは作成しません |
| 作成方法 | CloudFormation スタック (名前の例: OptSightReadOnly-3f2a9c)。作成・更新・削除は、AWS アカウントを運用する方の操作でのみ行われます |
| 誤操作の防止 | テンプレートに、想定と異なる AWS アカウントやスタック名では作成を拒否する条件 (Rules) を入れています |
| 撤去 | スタックを削除すればロールも削除され、その時点から OptSight は一切読み取れなくなります |
CloudFormation テンプレート
用途に応じて 2 種類あります。どちらも次の URL で内容をご確認いただけます。
実際の作成時に OptSight の画面からお渡しするリンクやファイルは、上記テンプレートに 貴団体専用の値 (ExternalId・AWS アカウント ID・スタック名) を事前に入れたものです。権限の内容は変わりません。
2. 信頼ポリシー (誰がこのロールを使えるか)
作成されるロールの信頼ポリシーは次のとおりです。
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::982206603762:role/OptSightCollector"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": { "sts:ExternalId": "<貴団体専用に発行する値>" }
}
}- このロールを引き受けられるのは、OptSight の基盤用 AWS アカウント (
982206603762) にあるOptSightCollectorロールだけです。 - 加えて、貴団体専用の ExternalId (16 文字以上) が一致しない限り引き受けはできません。 第三者がロールの ARN を知っても使えない仕組みで、デジタル庁 GCAS の推奨方式と同じ形です。
- 1 回の引き受けで得られる一時認証情報は、最長 1 時間で失効します。
OptSightCollectorを使えるのは、OptSight のアプリケーション実行基盤の自動処理 (短期トークンによる認証) だけです。 人が使うアクセスキーやパスワードは存在しません。
3. 権限ポリシー (何ができるか)
付与するのは読み取りの権限だけで、作成・変更・削除、IAM の操作は含みません。 住民情報や業務データ、サーバーの OS 内部、S3 のファイル、データベースの中身は読み取れない権限構成です。
標準 (コスト + 構成)テンプレート v8
| 用途 | アクション | 対象 |
|---|---|---|
EC2 インベントリ取得 EC2 インスタンス・インスタンスタイプ・EBS ボリュームの構成情報を取得します。 | ec2:DescribeInstances ec2:DescribeInstanceTypes ec2:DescribeVolumes | * |
RDS インベントリ取得 RDS インスタンス・クラスタの構成情報を読み取るための権限です。 | rds:DescribeDBInstances rds:DescribeDBClusters | * |
メトリクス取得 CPU・ネットワーク・メモリ等の CloudWatch メトリクスが対象です。 | cloudwatch:GetMetricData | * |
サーバー名の対応付け Systems Manager に登録されたサーバーのコンピュータ名とインスタンス ID の対応を取得します。Windows サーバーのメモリ・ディスク使用率を EC2 と結び付けるためだけに使い、対応表そのものは保存しません。 | ssm:DescribeInstanceInformation | * |
コスト情報取得 Cost Explorer から日次のコストを取得します。 | ce:GetCostAndUsage | * |
コスト異常検知の取得 Cost Explorer のコスト異常検知で検出された異常と、その監視設定を取得します。 ネットワーク分離では付与しません | ce:GetAnomalyMonitors ce:GetAnomalies | * |
Savings Plans の効果取得 Savings Plans の月ごとの利用率とカバレッジ (オンデマンドに対する割引の効き具合) を取得します。 ネットワーク分離では付与しません | ce:GetSavingsPlansUtilization ce:GetSavingsPlansCoverage | * |
Savings Plans 契約情報取得 購入済みの Savings Plans の設定 (コミットメント・期間・支払オプション) を読み取るための権限です。 ネットワーク分離では付与しません | savingsplans:DescribeSavingsPlans | * |
最適化提案取得 Compute Optimizer から EC2 / EBS / RDS の最適化提案と、Compute Optimizer の有効化状態を取得します。 | compute-optimizer:GetEC2InstanceRecommendations compute-optimizer:GetEBSVolumeRecommendations compute-optimizer:GetRDSDatabaseRecommendations compute-optimizer:GetEnrollmentStatus | * |
予算情報取得 対象は AWS Budgets で設定された予算と消化状況です。 ネットワーク分離では付与しません | budgets:ViewBudget budgets:DescribeBudgets | * |
テンプレート版確認 OptSight が作成した CloudFormation スタックのバージョン情報のみを取得します (他のスタックは対象外)。 | cloudformation:DescribeStacks | arn:aws:cloudformation:*:<このAWSアカウントID>:stack/OptSight*/* |
コストのみテンプレート v3
| 用途 | アクション | 対象 |
|---|---|---|
コスト情報取得 Cost Explorer から日次のコストを取得します。 | ce:GetCostAndUsage | * |
テンプレート版確認 OptSight が作成した CloudFormation スタックのバージョン情報のみを取得します (他のスタックは対象外)。 | cloudformation:DescribeStacks | arn:aws:cloudformation:*:<このAWSアカウントID>:stack/OptSight*/* |
対象が「*」の行は、アクション自体が読み取り専用のため、リソースを限定せずに許可しているものです。 テンプレートの版を上げて権限を追加する場合は、追加する権限と理由を事前にお知らせし、AWS アカウントを運用する方がスタックを更新した時点で有効になります。
4. 取得する AWS サービス・API・データ項目
標準テンプレートで取得するものです。コストのみのテンプレートでは、このうち Cost Explorer の日次金額だけになります。
| サービス | API | 取得するデータ |
|---|---|---|
| EC2 | ec2:DescribeInstances | インスタンス ID・インスタンスタイプ・状態・OS・タグ・起動時刻 |
| EC2 | ec2:DescribeInstanceTypes | インスタンスタイプの公開仕様 (vCPU 数・メモリ量) |
| EC2 | ec2:DescribeVolumes | EBS ボリュームの ID・種類・容量・接続先 (最適化提案の対象を特定するため) |
| RDS | rds:DescribeDBInstances / DescribeDBClusters | インスタンスクラス・エンジンとバージョン・ストレージ・マルチ AZ の有無・タグ |
| CloudWatch | cloudwatch:GetMetricData | CPU 使用率・ネットワーク送受信・メモリ / ディスク使用率 (1 時間単位の数値) |
| Systems Manager | ssm:DescribeInstanceInformation | コンピュータ名とインスタンス ID の対応 (Windows の使用率の対応付けにだけ使い、保存しません) |
| Cost Explorer | ce:GetCostAndUsage | サービス別・リージョン別の日次金額 |
| Cost Explorer | ce:GetAnomalyMonitors / GetAnomalies | コスト異常検知の結果 |
| Cost Explorer / Savings Plans | ce:GetSavingsPlans* / savingsplans:DescribeSavingsPlans | Savings Plans の契約内容・利用率・カバレッジ |
| Compute Optimizer | compute-optimizer:Get*Recommendations / GetEnrollmentStatus | EC2 / EBS / RDS のサイズ見直しの推奨と、有効化の状態 |
| Budgets | budgets:ViewBudget / DescribeBudgets | 設定済みの予算額と消化状況 |
| CloudFormation | cloudformation:DescribeStacks | OptSight が作ったスタック (名前が OptSight で始まるもの) の版数だけ |
取得の頻度と保存する粒度は サービス仕様 に記載しています。 権限上は CloudWatch アラームの状態も読めますが、現在は取得していません (次回のテンプレート改版で権限から外します)。
5. 共同利用方式 (ネットワーク分離) での制御
1 つの AWS アカウントに複数の団体の環境が同居している場合の、他団体の情報を取得・保存・表示しないための制御です。
前提: IAM だけでは絞り切れない範囲
AWS IAM の仕様では、「特定のタグが付いたリソースだけを読める」ロールは作れません。 EC2 や RDS の一覧を返す API は、タグの条件で読み取り範囲を制限できないためです。 したがって標準テンプレートのロールは、技術的には同じ AWS アカウント内の他団体のリソース情報も読み取れる権限になります。 OptSight はこの前提を隠さずにご説明したうえで、次の 3 段階で取得・保存・表示を自団体分に限定しています。
(1) 取得の段階で自団体分だけを受け取る
| ec2:DescribeInstances / DescribeVolumes | リクエストのタグ条件 (Filter) に自団体のタグを指定し、AWS から自団体分だけを受け取ります。 |
| ce:GetCostAndUsage | リクエストの条件には、コスト配分タグとして有効化された自団体のタグを入れる形です。 |
| compute-optimizer:GetEC2InstanceRecommendations / GetEBSVolumeRecommendations | 取得の対象は、自団体のタグが付いたリソースの ARN を指定したものだけです。 |
| cloudwatch:GetMetricData | 自団体分として取得済みのインスタンス ID (またはホスト名) だけを指定して呼び出します。 |
(2) 受信した直後に照合し、他団体分は保存しない
| rds:DescribeDBInstances / DescribeDBClusters | API がタグ条件に対応していないので、受信した直後にタグを照合し、一致しないものは保存の前に捨てています。 |
| compute-optimizer:GetRDSDatabaseRecommendations | 自団体の RDS の ID と照合し、一致しない推奨は残さない扱いです。 |
| ssm:DescribeInstanceInformation | 自団体のインスタンスの対応付けにだけメモリ上で使い、処理が終われば破棄します。対応表がデータベースに残ることはありません。 |
(3) タグで分けられないものは、権限ごと付与しない
次の API は AWS アカウント全体の値を返し、団体ごとに分けられません。ネットワーク分離の連携では、 テンプレートの分離方式のパラメータ (OptSight が入力済み) により、これらの権限をロールに付与しません。 IAM の段階で呼び出せないため、OptSight の実装に関わらず他団体の情報は読み取れない仕組みです。
| budgets:ViewBudget / DescribeBudgets | 予算は AWS アカウント単位の設定で、タグで分けられないため |
| ce:GetAnomalyMonitors / GetAnomalies | コスト異常検知は AWS アカウント単位で、タグで分けられないため |
| ce:GetSavingsPlansUtilization / GetSavingsPlansCoverage / savingsplans:DescribeSavingsPlans | Savings Plans は支払いアカウント単位の値で、特定の団体に帰属させられないため |
テンプレート v7 以前で作成したスタックには、これらの権限が付いています。OptSight はネットワーク分離の連携ではこれらを呼び出しませんが、 スタックを v8 以降に更新すると権限そのものが外れます。
保存したデータは団体ごとに分けて持ち、データベースの行レベルセキュリティとアプリケーションの絞り込みの二重の仕組みにより、 他の団体の利用者の画面には表示されません。
IAM の段階でさらに絞る方法
- コストのみのテンプレート — EC2・RDS・CloudWatch などの権限を含まないため、他団体のリソース構成や使用率は IAM の段階で読み取れません。ただし Cost Explorer はタグの条件を IAM で付けられないため、 コストについては「アカウント全体の集計値を読める権限」になります (取得時は自団体のタグで絞ります)。 この方式では、EC2 の一覧・使用率・落とし忘れの検知・最適化提案など、構成情報を使う機能はご利用になれません。
同じ AWS アカウントを使う別の団体が OptSight を利用する場合
- ロールは団体の連携ごとに 1 つです。別の団体が OptSight を利用する場合は、その団体専用のスタックとロールを別の名前で作成していただきます。 既存のロールを他の団体の取得に使うことはないため、OptSight が読み取りを始めるには必ず、AWS アカウントを運用する方による CloudFormation の実行が必要です。
- 各ロールの ExternalId は連携ごとに別の値です。ある団体の連携をやめるときは、その団体のスタックだけを削除すれば、 他の団体の連携には影響しません。
- ロールを作成しても、すぐには取り込みを始めません。団体が申請したタグを OptSight 運営が確認し、 同じアカウントの他の団体が使っているタグと重なっていないことなどを確かめて承認してから取り込みます。 団体があとからタグを変える場合も同じ承認を経て、それまでに取り込んだデータは削除してから取り込み直します。
事業者様の側で確かめる方法
- このロールによる API の呼び出しは、すべて AWS CloudTrail の管理イベントとして残る仕組みです。 セッション名が
optsight-で始まるので、OptSight からの呼び出しかどうかはそこで見分けがつきます。 - 呼び出した API の種類と頻度に加え、多くの API ではリクエストの条件 (タグ条件の値など) も記録に残ります。 どこまで記録し何日保持するかは、CloudTrail の設定次第です。
タグの設定方法
取得の範囲は、自団体のリソースに付いているタグ (キーと値の組) で決まります。スタックを作成する前に、次の手順でタグを確認してください。
1. タグのキーと値を事業者に確認する
- ガバメントクラウドの場合、キーは通常 CostTag です。 共同利用方式で団体ごとの費用を按分するために、事業者が各団体のリソースに付けているタグです。 その値を事業者にご確認ください。
- 事業者が CostTag 以外のキーで団体を分けている場合は、そのキーがデジタル庁の有効化済みのキー (Owner・CostGroup1〜CostGroup3 など) であれば、そのままお使いいただけます。
2. OptSight に登録する (自治体)
- アカウント追加の画面で、利用方式「共同利用」・分離方式「ネットワーク分離」を選び、確認したキーと値を入力します。
- 接続を確認したあと、OptSight 運営がタグを確認して承認するまで取り込みは始まりません。 あとからタグを変えた場合も承認をやり直し、それまでに取り込んだデータは削除してから取り込み直します。
ガバメントクラウドで使えるコスト配分タグの一覧は、デジタル庁の GCAS ガイド「クラウド利用料の予実管理と最適化 (AWS 編)」 に掲載されています。
6. 取得データの保存場所と保存期間
| 保存場所 | アプリケーション・データベース・ファイルのバックアップとも、国内 (東京リージョン) のクラウド基盤に置いています |
| 暗号化 | 通信は HTTPS で暗号化し、保存時のデータも暗号化しています |
| 保存期間 | コストは契約期間中は無期限、使用率は 14 か月、最適化推奨は 90 日、構成変更の履歴は 2 年です。 詳しくは サービス仕様 の「データ保存期間」をご覧ください |
| 契約終了後 | 削除の手続から 30 日後にすべてのデータを物理削除し、その後 7 日以内にバックアップからも消えます |
| AI 提案 | AI による最適化提案で大規模言語モデルの API に送るのは、分析に必要なデータだけです。送ったデータが学習に使われることはありません |
7. 人によるアクセス
| AWS 管理コンソール | OptSight の担当者が貴団体の AWS 管理コンソールにサインインすることはありません。そのための ID・アクセスキーも持っていません |
| 自動の取得 | ロールを使った読み取りは、定期実行の自動処理が行います |
| 担当者による操作 | 表示の不具合を切り分けるため、運営担当者の操作で読み取りを実行することがあります (例: ディスク使用率の内訳の確認)。対象は自団体分として取得済みのリソースだけで、 内容は上記の権限の範囲内の読み取りに限られ、CloudTrail にも記録されます |
| 取得したデータ | OptSight の画面で見られるのは、その団体に招待された利用者だけです。 運営担当者は、サポート・請求・品質確認に必要な範囲 (連携の状態、月次レポートの金額、削減実績の集計など) を管理画面で参照します。 障害の調査では、限られた担当者がデータベースを直接確認する場合があります |
8. 関連資料
このページにない確認事項や、セキュリティチェックシートへのご記入のご依頼は、OptSight 担当者までお問い合わせください。