環境サイジングガイド
このガイドでは、AWS、Azure、GCP、OCI、Snowflake などのマルチクラウド環境全体で請求対象のリソースを検出するためのサイジングスクリプト実行方法について説明します。これらのスクリプトは、過去の平均ではなく、環境の「リアルタイム」のポイントインタイムスナップショットをキャプチャします。結果を確認する際は、リソース数が想定と一致することを確認し、潜在的な有機的成長を考慮してから、最終出力ファイルを Tenable の担当者と共有して価格設定を確認してください。
注意: サイジングスクリプトはほかのリソースを検出できません。それらのリソースは追加のコストが発生するため、手動で集計するようにしてください。
請求対象のリソース
Tenable One Cloud Exposure は、環境内で検出されたリソースに基づいてスケーリングを行います。請求対象のリソースには、以下のようにさまざまなタイプがあります。
- コンピューティングリソース: VM、コンテナホスト、サーバーレス機能などのコアワークロード
- スキャンベースのリソース (オプトイン): アクティブスキャンが有効な場合にのみ請求される追加リソース (コンテナリポジトリ、VM イメージ、データ保護 (バケット/データベース) など)
スクリプトは、未加工のリソース数 (Lambda 関数または S3 バケットの総数など) を提供します。これらの合計は、特定の比率 (サーバーレス関数の場合は 10:1 など) に基づいて請求対象ユニット数に変換されます。
これらの比率の内訳全体および最終的なライセンス数に与える影響については、請求対象のコンピューティングおよびスキャンベースのリソース セクションを参照してください。
| リソースタイプ/請求対象ライセンス¹ | カテゴリ | AWS | Azure | GCP | Alibaba Cloud | OCI | オンプレミス/その他 |
|---|---|---|---|---|---|---|---|
| コンピュート
Foundation、Advanced、CNAPP Complete、Cloud VM、CIEM、Standard、Enterprise |
仮想マシン | EC2 インスタンス | 仮想マシン、VM スケールセットインスタンス | 仮想マシンインスタンス | ACK を実行している ECS インスタンス | コンピューティングインスタンス | - |
| コンテナホスト² | EKS/ECS を実行する EC2 インスタンス | AKS を実行する VM スケールセットインスタンス | GKE を実行する仮想マシンインスタンス | ACK を実行している ECS インスタンス | OKE を実行するコンピューティングインスタンス | Kubernetes ノード | |
| サーバーレス関数³ | Lambda 関数 | App Services | Cloud Functions | - | Functions | - | |
| サーバーレスコンテナ³ | ECS サービス | コンテナインスタンス | Cloud Run、GKE Autopilot | - | - | - | |
| スキャンベース ワークロード保護 Foundation、Advanced、CNAPP Complete、Cloud VM、 Standard、Enterprise |
コンテナリポジトリ⁴、⁵ | ECR リポジトリ | コンテナリポジトリ | アーティファクトコンテナイメージリポジトリ | コンテナレジストリリポジトリ | - | CI/CD³、サードパーティレジストリの追加 |
| 仮想マシンイメージ | EC2 イメージ | - | - | ACK を実行している ECS イメージ | - | - | |
| データディスク | EC2 インスタンスデータボリューム |
|
VM インスタンスデータディスク | ECS ディスク | コンピューティングインスタンスデータボリューム | ||
| スキャンベース データ保護 CNAPP Complete、Standard、Enterprise |
バケット³ | S3 バケット | ストレージアカウント Blob コンテナ | ストレージバケット | OSS バケット | オブジェクトストレージバケット | - |
| マネージドデータベース³ |
|
Azure SQL Server |
|
- | - | - | |
| データプラットフォームデータベース³ | - | - | - | - | - | Snowflake の接続ローカル、共有、マーケットプレイス | |
| JIT リクエスト者 JIT、CIEM、Standard、CNAPP Complete、Enterprise |
ユーザー | AWS SSO ユーザー | Azure AD ユーザー | GCP ユーザー | - | - |
|
¹ リストされているライセンスのリソースは、請求対象の使用量としてカウントされます。リストにないライセンスのリソースも対象ですが、請求対象ではありません。
² これには、請求対象ユニットとして仮想マシン (1:1) が含まれます。
³ これらのリソースは、Cloud Vulnerability Management ライセンスに関連していません。
⁴ これらのリソースタイプは、コンテナリポジトリ内のイメージではなく、コンテナリポジトリ自体に基づいています。たとえば、コンテナリポジトリは、同じコンテナのイメージが 15 個でも 150 個でも、1 つの請求対象リソースと見なされます。
⁵ 同じコンテナリポジトリが CI/CD パイプラインとレジストリスキャンの両方でモニタリングされている場合、これは 2 つの異なる請求対象リソースとして扱われます。
AWS
このセクションでは、AWS 環境内でサイジングスクリプトを実行するために必要な前提条件と実行手順を説明します。
前提条件
推奨設定
サイジングスクリプトは、単一の AWS 組織内の複数アカウントをスキャンするために次のアーキテクチャを前提としています。
上の図の説明
- サイジングスクリプトの実行に使用される IAM ロールは、管理アカウントに属しています。
- その IAM ロールには、すべてのメンバーアカウントの sts:AssumeRole に対するアクセス許可と、管理アカウント (ECS、EKS、EC2、Lambda、組織) でリソースのクエリを実行するためのアクセス許可が必要です。
上のアーキテクチャの例では、IAM ロールを使用してリソースのクエリを行い、メンバーアカウントでロールを引き受けています。また、サイジングスクリプトは、メンバーアカウントでロールを引き受ける IAM ユーザーの使用もサポートします。これには --user-access-key-id と --user-secret-access-key、または --profile-name フラグが使用されます。
さらに、メンバーアカウントで OrganizationAccountAccessRole とは異なるロール名を使用できます。これは --organization-account-access-role-name フラグを使用することで実現できます。
- CLI: サイジングスクリプトを実行するには、次のツールをインストールします。
-
アクセス許可
-
スクリプトを実行するには、次のアクセス許可を持つアイデンティティ (IAM ユーザーまたは IAM ロール) が必要です。
- OrganizationAccountAccessRole IAM ロール (または類似)に対する sts:assumeRole アクセス許可
- 請求対象のリソースにリストされているすべてのリソースの読み取り許可
一元化されたアカウントからアクセスできる IAM ロールがない場合は、代わりに個別のアカウントでスクリプトを実行できます。
-
スクリプトを実行するには、次のアクセス許可を持つアイデンティティ (IAM ユーザーまたは IAM ロール) が必要です。
ダウンロード
URL https://tenable-utilities.s3.amazonaws.com/Sizing/AWS.zip から AWS サイジングスクリプトをダウンロードし、.zip を解凍してください。
手順
AWS 環境の請求対象のリソース数を収集するには、次の手順を実行します。
- pip を使用して必要なパッケージをインストールします。
- pip で必要なパッケージをインストールするには、次のコマンドを実行します。
pip3 install -r requirements.txt オプションの実行フラグ
カテゴリ フラグ 説明 データ保護 --exclude-data-resources オプション。データリソースを除外。 リージョン --use-optional-public-regions オプション。オプションのリージョンをスキャン。 Gov アカウント --us-gov オプション。US Gov アカウントをスキャン。
- pip で必要なパッケージをインストールするには、次のコマンドを実行します。
- 次のいずれかのオプションでサイジングスクリプトを実行します。
- デフォルトの認証情報を使用: デフォルトの AWS CLI 認証情報を使用してスクリプトを実行するには、コマンド python3 sizing.py -o <outputDir> を実行します。
- IAM ユーザーのアクセスキーとシークレットを使用: コマンド python3 sizing.py -i <keyId> -k <keySecret> -o <outputDir> を実行します。
-
パラメーター
- keyId は、AWS 組織の管理アカウントにおける IAM ユーザーの AWS アクセスキー ID です。
- keySecret は、同じアクセスキーのシークレットです。
-
パラメーター
- 名前付きプロファイルを使用: AWS CLI スクリプトを実行するために名前付きプロファイルを使用している場合は、--profile-name (または -p) パラメーターを使用してコマンド python3 sizing.py -p <profileName> -o <outputDir> を実行します。
- 出力を確認します。エラーと警告のスクリプト出力を確認します。アカウントの数が想定と一致することを確認してください。アクセス許可エラーまたはその他の問題により、一部のリソースにアクセスできないことがあります。
Alibaba Cloud
このセクションでは、Alibaba Cloud 環境内でサイジングスクリプトを実行するために必要な前提条件と実行手順を説明します。
前提条件
推奨設定
サイジングスクリプトは、単一の Alibaba Cloud リソースディレクトリ内の複数アカウントをスキャンするために次のアーキテクチャを前提としています。
- サイジングスクリプトの実行に使用される RAM ユーザーは、管理アカウントに属しています。
- その RAM ユーザーには、すべてのメンバーアカウントの sts:AssumeRole に対するアクセス許可と、管理アカウント (ECS、リソースマネージャー) でリソースのクエリを実行するためのアクセス許可が必要です。
- 各メンバーアカウントでは、ResourceDirectoryAccountAccessRole という名前の RAM ロール (アカウントがリソースディレクトリに追加されたときにデフォルトで作成) がクロスアカウントアクセスに使用されます。
--organization-account-access-role-name フラグを使用することで、メンバーアカウントで ResourceDirectoryAccountAccessRole以外のロール名を使用できます。
- スクリプトは、リソースディレクトリの管理アカウントから実行する必要があります。ルートユーザーまたは Alibaba Cloud アカウントの認証情報を直接使用しないでください。ルートユーザーにはロールを引き受けるアクセス許可がありません。代わりに、適切なアクセス許可を持つ RAM ユーザーを作成してください。
- リソースディレクトリを使用していない場合、またはすべてのメンバーアカウントで組織ロールが設定されていない場合でも、個々の Alibaba Cloud アカウントでサイジングスクリプトを実行し、結果を共有することができます。
- CLI: サイジングスクリプトを実行するには、次のツールをインストールします。
- アクセス許可
-
スクリプトを実行するには、次のアクセス許可を持つ、管理アカウントの RAM ユーザーが必要です。
- ecs:DescribeInstances — 管理アカウントの ECS インスタンスをリストする
- sts:AssumeRole — メンバーアカウントの ResourceDirectoryAccountAccessRole を引き受ける
- resourcemanager:GetResourceDirectory — 組織メンバーシップを検出する
- resourcemanager:ListAccounts — リソースディレクトリ内のすべてのアカウントをリストする
-
スクリプトを実行するには、次のアクセス許可を持つ、管理アカウントの RAM ユーザーが必要です。
ダウンロード
URL https://tenable-utilities.s3.amazonaws.com/Sizing/Alibaba.zip から Alibaba Cloud サイジングスクリプトをダウンロードし、.zip コンテンツを解凍してください。
手順
Alibaba Cloud 環境の請求対象リソース数を収集するには、次の手順を実行します。
- pip を使用して必要なパッケージをインストールします。
- pip で必要なパッケージをインストールするには、次のコマンドを実行します。
pip3 install -r requirements.txt オプションの実行フラグ
カテゴリ フラグ 説明 組織 --organization-account-access-role-name オプション。メンバーアカウントで引き受けるカスタムロール名 (デフォルト: ResourceDirectoryAccountAccessRole)。
- pip で必要なパッケージをインストールするには、次のコマンドを実行します。
- 次のいずれかのオプションでサイジングスクリプトを実行します。
環境変数を使用する: 以下の環境変数を設定して、スクリプトを実行します。
コピーexport ALIBABA_CLOUD_ACCESS_KEY_ID=<accessKeyId>
export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<accessKeySecret>
python3 sizing.py -o <outputDir>- CLI 引数を使用する: 次のコマンドを実行します。
python3 sizing.py -i <accessKeyId> -k <accessKeySecret> -o <outputDir>-
パラメーター
- accessKeyId は、管理アカウントの RAM ユーザーのアクセスキー ID です。
- accessKeySecret は、同じ RAM ユーザーのアクセスキーのシークレットです。
- outputDir は、スクリプトが出力ファイルを書き込むディレクトリです。
-
パラメーター
- 出力を確認します。エラーと警告のスクリプト出力を確認します。アカウントの数が想定と一致することを確認してください。アクセス許可エラーまたはその他の問題により、一部のリソースにアクセスできないことがあります。
Azure
このセクションでは、Azure 環境内でサイジングスクリプトを実行するために必要な前提条件と実行手順を説明します。
前提条件
- CLI: サイジングスクリプトを実行するには、次のツールをインストールします。
- アクセス許可
- サイジングスクリプトを実行するためのアイデンティティには、閲覧者およびストレージ Blob データ閲覧者の組み込みロールが必要です。
- (すべてのサブスクリプションからデータを収集するには) ルート管理グループにロールが割り当てられる必要があります。または、サイジング情報を取得する組織のサブセットごとに、スクリプトを複数回実行することもできます。
ダウンロード
URL https://tenable-utilities.s3.amazonaws.com/Sizing/Azure.zip から Azure サイジングスクリプトをダウンロードし、.zip を解凍してください。
手順
Azure 環境の請求対象のリソース数を収集するには、次の手順を実行します。
- pip を使用して必要なパッケージをインストールします。
- pip で必要なパッケージをインストールするには、次のコマンドを実行します。
pip3 install -r requirements.txt オプションの実行フラグ
カテゴリ フラグ 説明 データ保護 --exclude-data-resources オプション。データリソースを除外。 クラウド環境 --cloud-environment オプション。デフォルトではパブリックパーティションをスキャン。可能な値は、public、china、us_gov です。
- pip で必要なパッケージをインストールするには、次のコマンドを実行します。
- サイジングスクリプトを実行します。サイジングスクリプトを実行するには、コマンド
python3 sizing.py -t %TenantId% -o %OutputDir% を実行します。-
パラメーター
- %OutputDir% は、スクリプトの出力パスです。
- %TenantId% は、サイジングに必要な Azure AD テナント ID です。
-
パラメーター
- 出力を確認します。エラーと警告のスクリプト出力を確認します。サブスクリプションの数が想定と一致することを確認してください。アクセス許可エラーまたはその他の問題により、一部のリソースにアクセスできないことがあります。
GCP
このセクションでは、GCP 環境内でサイジングスクリプトを実行するために必要な前提条件と実行手順を説明します。
前提条件
- CLI: サイジングスクリプトを実行するには、次のツールをインストールします。
- アクセス許可
- 以下の手順を実行できるのは、組織内のすべてのプロジェクトに対してビューワーのアクセス許可を持つユーザーです。
- サイジングスクリプトを実行するアイデンティティには、次の組織スコープのロールバインディングが必要です。
- スクリプトの実行に使用されるクォータプロジェクトで Cloud Asset API を有効にする必要があります。
ダウンロード
URL https://tenable-utilities.s3.amazonaws.com/Sizing/GCP.zip から GCP サイジングスクリプトをダウンロードし、.zip を解凍してください。
手順
GCP 環境の請求対象のリソース数を収集するには、次の手順を実行します。
- pip を使用して必要なパッケージをインストールします。
- pip で必要なパッケージをインストールするには、次のコマンドを実行します。
pip3 install -r requirements.txt オプションの実行フラグ
カテゴリ フラグ 説明 データ保護 --exclude-data-resources オプション。データリソースを除外。
- pip で必要なパッケージをインストールするには、次のコマンドを実行します。
- サイジングスクリプトを実行します。サイジングスクリプトを実行するには、コマンド
python3 sizing.py -oid <organization_id> -qpid <project_id> -o <output_dir> を実行します。-
パラメーター
- <organization_id> は、サイジングに必要な GCP 組織 ID です。
- <project_id> は、クォータプロジェクト ID です (API クォータはこのプロジェクトによって消費されます)。
- <output_dir> は、スクリプトの出力パスです。
-
オプションのパラメーター
- -pid <project_id> は、サイズを設定する個別のプロジェクト ID です。
- -fid <folder_id> は、サイズを設定するフォルダーの ID です (-pid と一緒には使用できません)。
-
パラメーター
- 出力を確認します。エラーと警告のスクリプト出力を確認します。プロジェクトの数が想定と一致することを確認してください。アクセス許可エラーまたはその他の問題により、一部のリソースにアクセスできないことがあります。
OCI
このセクションでは、OCI 環境内でサイジングスクリプトを実行するために必要な前提条件と実行手順を説明します。
前提条件
スクリプトを実行するには、次のアクセス許可を持つアイデンティティが必要です。 read all-resources
ダウンロード
URL https://tenable-utilities.s3.amazonaws.com/Sizing/OCI.zip から OCI サイジングスクリプトをダウンロードし、.zip を解凍してください。
手順
以下に概説するように、必要な認証情報を使用して OCI CloudShell 内で、またはお使いのマシンでローカルにスクリプトを実行できます。次の手順で、OCI 環境の請求対象リソースの数を判断します。
オプションの実行フラグ
| カテゴリ | フラグ | 説明 |
|---|---|---|
| データ保護 | --exclude-data-resources | オプション。データリソースを除外。 |
OCI 環境の請求対象のリソース数を収集するには、次のオプションの手順を実行します。
- OCI Cloud Shell でサイジングスクリプトを実行します。
- OCI コンソールにログインして、OCI Cloud Shell を開きます。
- 設定アイコンをクリックして、サイジングとユーティリティのスクリプトをアップロードし、[Upload] をクリックします。
- 次のコマンドを実行します。 python3 sizing.py --out-dir
- 出力ファイルをダウンロードするには、設定アイコンをクリックし、 [Download] を選択して、出力パスを指定します (例: oci_sizing_2024-05-02-19-20-32/summary.csv)。または、ホームディレクトリにアクセスします。
- エラーと警告のスクリプト出力を確認します。テナンシやのコンパートメントの数が想定と一致することを確認してください。アクセス許可エラーまたはその他の問題により、一部のリソースにアクセスできないことがあります。
- ローカルマシンでサイジングスクリプトを実行します。ローカルマシンでサイジングスクリプトを実行するには、まず関連する認証情報を取得する必要があります。
設定ファイルの作成方法については、OCI ドキュメントを参照してください。- サイジングスクリプトを実行する前に、次のツールがインストールされていることを確認します。
- コマンド pip3 install -r requirements.txt を使用して pip 経由で必要なパッケージをインストールします。
- サイジングスクリプトを実行するには、次のコマンドを実行します。
python3 sizing.py --user-ocid <UserOCID> --fingerprint <Fingerprint> --tenancy-ocid <TenancyOCID> --private-key-file-path <PrivateKeyFilePath> --region <Region> -o %OutputDir%. - 出力を確認します。エラーと警告のスクリプト出力を確認します。コンパートメントの数が想定と一致することを確認してください。アクセス許可エラーまたはその他の問題により、一部のリソースにアクセスできないことがあります。
Snowflake
このセクションでは、Snowflake 環境内でサイジングスクリプトを実行するために必要な前提条件と実行手順を説明します。
前提条件
スクリプトを実行するには、AccountAdmin アクセス許可を持つアイデンティティが必要です。
ダウンロード
URL https://tenable-utilities.s3.amazonaws.com/Sizing/Snowflake.zip から Snowflake サイジングスクリプトをダウンロードし、.zip を解凍してください。
手順
請求対象のリソースの数を収集する方法
- Snowflake ポータルを開いて、新しい Python ワークシートを作成します。
- ワークシートにサイジングスクリプトコードをコピーして実行します。
- エラーと警告のスクリプト出力を確認します。リソースの数が想定と一致することを確認してください。アクセス許可エラーまたはその他の問題により、一部のリソースにアクセスできないことがあります。
ほかのリソース
次の請求対象なリソースは、このサイジングスクリプトの範囲外です。これらのリソースの見積もりを手動で入力するか、環境が最終計算のために完全にオンボードされるまで待ちます。
| カテゴリ | リソース |
|---|---|
| VM¹ | Kubernetes ノード |
| コンテナを実行している VM¹ | Kubernetes ノード |
| コンテナを実行している VM¹ | セルフマネージド Kubernetes ノード (AWS、Azure、GCP) |
| コンテナリポジトリ² | コンテナリポジトリ |
| コンテナリポジトリ³ | CI/CD 経由で検出されたコンテナリポジトリ |
¹ スキャン対象のリソースにのみ適用されます。
² スキャン対象のリポジトリのみが、請求対象とみなされます。
³ 同一のコンテナリポジトリが CI/CD パイプラインとレジストリスキャンの両方でモニタリングされる場合、2 つの異なる請求対象リソースとして扱われます。
