リリースノート
1.0.0 (Requires minimum Cloud Exchange version 6.1.0)
Added
- 初回リリース。
- ログタイプ:アラート、イベント、WebTx、ログ
- Format Type: CEF, JSON
本書では、AWS CloudWatch v1.0.0プラグインをNetskope Cloud ExchangeプラットフォームのLog Shipperモジュールで設定する方法について説明します。このプラグインは次のインジェクションをサポートしています。
- アラート(DLP、マルウェア、ポリシー、侵害されたクレデンシャル、悪意のあるサイト、検疫、修復、セキュリティ評価、ウォッチリスト、UBA、CTEP、デバイス、コンテンツ、異常、法的保持)
- イベント(ページ、アプリケーション、監査、インフラストラクチャ、ネットワーク、インシデント、エンドポイント、クライアントステータス)
- BWANイベント(認証、監査、クライアント、ゲートウェイ、システム)
- WebTxとログ(デバッグ、情報、エラー、警告)。
このプラグインは、CEFおよびJSON形式でのインジェストをサポートしています。
前提条件
この設定を完了するには、以下が必要です。
- Netskopeテナント(または、例えば本番環境と開発/テスト環境など、複数のテナント)。
- Tenant pluginと Log Shipper pluginがすでに構成されているNetskope Cloud Exchangeテナント。
- BWANプラグインがすでに設定されているNetskope Cloud Exchangeテナント。
- Netskope Log Streaming pluginからアラート、イベント、WebTxを取り込むために、すでに構成されている AWS Log Streaming pluginおよび Azure Log Streaming plugin。
- IAMユーザーへのAmazon CloudWatchログ権限。
- DescribeLogGroups
- DescribeLogStreams
- CreateLogGroup
- CreateLogStream
- PutLogEvents
- AWS CloudWatchサービスへの接続。
- Secret Managerの構成については、このドキュメントを参照してください。Azure Key Vault Secrets Managerの設定については、このドキュメントを参照してください。
AWS CloudWatchプラグインのサポート
このプラグインは、CEFおよびJSON形式でのインジェストをサポートしています。
| データ型 | サポート |
|---|---|
| イベント | はい(ページ、アプリケーション、監査、インフラストラクチャ、ネットワーク、インシデント、エンドポイント、クライアントステータス) |
| アラート | はい (DLP、マルウェア、ポリシー、侵害されたクレデンシャル、マルサイト、検疫、修復、セキュリティ評価、ウォッチリスト、UBA、CTEP、デバイス、コンテンツ) |
| Cloud Exchangeログ | はい(情報、エラー、警告、デバッグ) |
| BWANイベント | はい(認証、監査、クライアント、ゲートウェイ、システム) |
| ウェブテキサス | はい(Netskope LogStreaming経由) |
APIの詳細
使うAPI一覧
このプラグインはPythonライブラリを使用して、AWS CloudWatch Logsにロググループ、ログストリーム、およびログイベントを作成します。
Library: The AWS SDK for Python (Boto3)
用途: AWS SDK for Python(Boto3)は、Amazon CloudWatch LogsなどのAWSサービスの作成、構成、管理に使用されます。このSDKは、AWSサービスへの低レベルアクセスだけでなく、オブジェクト指向APIも提供します。このプラグインは低レベルのログクライアントのみを使用します。これはAmazon CloudWatch Logs APIと1対1でマッピングされます。
Boto3 CloudWatch Logsクライアントの詳細については、公式ドキュメントを参照してください。https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/logs.html
クライアントの作成
クライアントは、選択された認証方法から解決されたクレデンシャル、AWS CloudWatchリージョン名またはAWS CloudWatchカスタムリージョンから派生したリージョン、構成されたプロキシとSSL検証設定、およびNetskope APNユーザーエージェントを使用して作成されます。構成の検証中、リトライ回数は0に設定されるため、エラーは直ちにユーザーに表示されます。プッシュパスでは、標準のリトライモードでリトライ回数は3になります。
cloudwatch_client = boto3.client(
"logs",
aws_access_key_id=self.aws_public_key,
aws_secret_access_key=self.aws_private_key,
aws_session_token=self.aws_session_token,
region_name=get_effective_region(self.configuration),
verify=self._get_verify(),
config=Config(
proxies=self.proxy,
user_agent=self.useragent,
connect_timeout=CONNECT_TIMEOUT,
read_timeout=READ_TIMEOUT,
retries={"max_attempts": MAX_RETRIES, "mode": "standard"},
),
)
AWSクレデンシャルを確認する (DescribeLogGroups)
設定の検証中に、クレデンシャルが有効で、ロールがCloudWatch Logsを読むことを確認するために行われる単一のDescribeLogGroups呼び出し。ログイベントは書き込まれません。
cloudwatch_client.describe_log_groups(
logGroupNamePrefix=log_group_name, limit=1
)
ロググループの存在の確認 (DescribeLogGroups)
ページ分割されたルックアップは、設定の検証中に、設定されたロググループ名が既に存在するかどうかを調べるために使用されます。これにより、プラグインはロググループが存在しない場合にのみ、それを作成します。最大20ページ(各ページに50個のロググループ)がスキャンされます。
response = cloudwatch_client.describe_log_groups(
logGroupNamePrefix=log_group_name,
limit=DESCRIBE_PAGE_LIMIT,
nextToken=next_token,
)
ログストリームの存在を確認する(DescribeLogStreams)
設定の検証中にページ分割されたルックアップを使用して、設定済みのログストリーム名がロググループ内に既に存在するかどうかを確認します。
response = cloudwatch_client.describe_log_streams(
logGroupName=log_group_name,
logStreamNamePrefix=log_stream_name,
limit=DESCRIBE_PAGE_LIMIT,
nextToken=next_token,
)
ロググループの作成
ロググループ名で設定されたロググループが存在しない場合に作成します。
cloudwatch_client.create_log_group(logGroupName=log_group_name)
ログストリームを作成する
まだ存在していない場合、ロググループ内のLog Stream Nameで構成されたログストリームを作成します。
cloudwatch_client.create_log_stream(
logGroupName=log_group_name,
logStreamName=log_stream_name,
)
ログをログストリーム(PutLogEvents)にプッシュする
ログイベントの1バッチを、設定されたロググループおよびログストリームにアップロードします。これは、実際の取り込みを実行する呼び出しです。
log_events = [
{"timestamp": timestamp_ms, "message": message}
for message in batch
]
cloudwatch_client.put_log_events(
logGroupName=log_group_name,
logStreamName=log_stream_name,
logEvents=log_events,
)
バッチは以下のAWS制限内で作成され、イベントはAPIの要件に従って呼び出し前にタイムスタンプでソートされます。
| Limit | Value |
|---|---|
| リクエストごとの最大ログイベント数 | 10,000 |
| 最大リクエストサイズ | 1,048,576バイト |
| 単一のログイベントの最大サイズ | 1,048,576バイト |
| Overhead AWS adds per log event | 26バイト |
レスポンスでrejectedLogEventsInfoが検査されるため、古すぎる、新しすぎる、または有効期限が切れているとしてAWSが拒否したイベントは、再試行されるのではなく、カウントされてレポートされます。
Library: Requests
使い方: requestsライブラリはPython用のHTTPクライアントです。プラグインはそれを使用してAWS IAM Roles Anywhere CreateSession APIを呼び出します。これはBoto3 CloudWatch Logsクライアントでは公開されていません。この呼び出しは、認証方法が「AWS IAM Roles Anywhere」に設定されている場合にのみ行われます。
requestsライブラリの詳細については、公式ドキュメントを参照してください。https://requests.readthedocs.io/en/latest/
一時的なクレデンシャルを生成する(セッションの作成)
設定されたX.509証明書と秘密鍵は短期間のAWSクレデンシャルと交換され、それがBoto3 CloudWatch Logsクライアントの作成に使うされます。リクエストはAWS4-X509-RSA-SHA256アルゴリズムで署名されます。
# endpoint = "https://rolesanywhere.{region}.amazonaws.com"
# ("amazonaws.com.cn" for the China partition)
# canonical_uri = "/sessions"
request_parameters = json.dumps(
{
"durationSeconds": 900,
"profileArn": profile_arn,
"roleArn": role_arn,
"sessionName": "Session",
"trustAnchorArn": trust_anchor_arn,
}
)
headers = {
"Content-Type": "application/json",
"X-Amz-Date": amz_date,
"X-Amz-X509": amz_x509,
"Authorization": authorization_header,
"User-Agent": self.user_agent,
}
response = requests.post(
endpoint + canonical_uri,
data=request_parameters,
headers=headers,
proxies=self.proxy,
timeout=ROLES_ANYWHERE_TIMEOUT,
verify=self.verify,
)
レスポンスはcredentialSet[0].クレデンシャルを保持しますaccessKeyId、secretAccessKey、sessionToken、およびexpirationが含まれます。このクレデンシャルは900秒間有効で、有効期限が切れる3分前にプラグインによって自動的に更新されます。この呼び出しでは、10秒の接続タイムアウトと60秒の読み取りタイムアウトが使用されます。
AWS IAM Roles Anywhereの詳細については、公式ドキュメントを参照してください。https://docs.aws.amazon.com/rolesanywhere/latest/APIReference/API_CreateSession.html
Library: Cryptography
使用法:暗号化ライブラリは、Pythonに対して暗号化プリミティブとX.509証明書処理を提供します。プラグインは、AWS IAM Roles Anywhere認証メソッドでのみ、CreateSessionリクエストの署名を構築するためにこれを使用します。
暗号ライブラリの詳細については、公式ドキュメントを参照してください。https://cryptography.io/en/latest/
秘密鍵のロード
設定された秘密鍵は、パスフレーズなしで最初に読み込まれ、キーが暗号化されている場合はパスワードフレーズとともに読み込まれます。
private_key = serialization.load_pem_private_key(
private_key_file.encode("utf-8"), None
)
# Encrypted key
private_key = serialization.load_pem_private_key(
private_key_file.encode("utf-8"),
password=str.encode(pass_phrase),
)
証明書の読み込みとX.509ヘッダーの作成
設定されたCertificate Bodyは、X-Amz-X509ヘッダーで送信されるDERエンコーディングと、Authorizationヘッダークレデンシャルフィールドで使用されるシリアル番号を導出するためにロードされます。
cert = x509.load_pem_x509_certificate(
public_certificate_file.encode()
)
amz_x509 = str(
base64.b64encode(
cert.public_bytes(encoding=serialization.Encoding.DER)
),
"utf-8",
)
serial_number_dec = cert.serial_number
リクエストに署名する
正規文字列はPKCS#1 v1.5パディングとSHA-256で署名され、16進数の署名はAuthorizationヘッダーに配置されます。
signature = private_key.sign(
data=string_to_sign.encode("utf-8"),
padding=padding.PKCS1v15(),
algorithm=hashes.SHA256(),
)
signature_hex = signature.hex()
パフォーマンスマトリックス
このパフォーマンス測定は、以下のVM仕様を持つ大規模スタックCE上で実施されました。
| デスクリプション | 仕様 |
|---|---|
| スタックの詳細 | サイズ:大 RAM:32 GB CPU:16コア |
| SIEMに取り込まれたアラート/イベント | 約20万EPM |
| SIEMに取り込まれるWebTx(Netskope LogStreaming経由) | 約16万5千EPM |
ユーザーエージェント
APN/1.1 (ahq9d89xj9gspapczzdb59goq)
ワークフロー
- AWS CloudWatchロググループ、ログストリーム、およびポリシーを作成します。
- プライベートキー、証明書ボディ、パスワードフレーズ、プロファイルARN、ロールARN、トラストアンカーARNを生成します。 AWS IAMロールAnywhereの場合。
- AWS CloudWatchプラグインを設定します。
- AWS CloudWatchのログシッパービジネスルールを設定します。
- AWS CloudWatch 向けの Log Shipper Log Delivery を構成します。
- AWS CloudWatchプラグインを検証します。
動画を見る
再生ボタンをクリックして動画をご覧ください。
CloudWatchロググループを作成する
- AWSコンソールにログインしてください。
- 「すべてのサービス」から「CloudWatch」を選択するか、検索バーでCloudWatchを検索します。
- 右上にあるリージョンセレクターを確認します。ロググループはそのリージョンに作成されます。プラグインのAWS CloudWatchリージョン名パラメーターで同じリージョンを選択してください。
- 左側のパネルで、 Logs > Log groupsをクリックします。
- Create log groupをクリックしてください。
- Enter the Log group name, like netskope-ce-log-group.
- Select a 「保持設定」, *期限切れなし*、または組織が必要とする期間を選択できます。
- ログクラスにStandardを選択します。
- KMSキーARNとタグはオプションです。
- Createをクリックしてください。
CloudWatch Logストリームを作成する
- CloudWatchでLogs > Log groupsに移動します。
- 上で作成したロググループを検索し、その名前をクリックして開きます。
- [Log streams]タブを開きます。
- Create log streamをクリックしてください。
- Enter the Log stream name, like netskope-ce-log-stream.
- Createをクリックしてください。
CloudWatchログポリシーの作成
-
検索ボックスでIAMを検索し、左側のパネルでPoliciesをクリックします。
-
Create Policyをクリックしてください。

-
「JSON」タブをクリックし、以下に記載するポリシーを入力します。「次へ:タグ」をクリックし、「次へ:確認」をクリックします

{ "Version": "2012-10-17", "Statement": [ { "Sid": "NetskopeCECloudWatchLogs", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups", "logs:DescribeLogStreams", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" } ] } -
このポリシーをユーザーにアタッチします:
プラグイン認証方法
IAMロールAnywhereの設定
前提条件
プラグインを認証するには、AWS Certificate Manager サービスを有効にする必要があります。 AWS IAM Roles Anywhere 認証方法。
プライベート認証局、トラストアンカー、およびプロファイルは、AWS S3ソースバケットが存在するリージョンと同じリージョンに作成してください。
ポリシーを作成する
この には、プライベート CA 証明書を作成するために必要な権限 (トラスト アンカーとプロファイルを作成するための権限を含む) と IAM ロール Anywhere が含まれています。
-
「ポリシー Generator」に移動し、ポリシータイプとして「IAM ポリシー」を選択してポリシーを生成します。
- Select Type of Policy: IAMポリシー
- Effect: 許可する
- AWS Service: AWS Private Certificate Authority
- Actions:
- 証明書認証局を作成する
- 認証局について説明します
- 証明書を取得する
- 認証局証明書を取得する
- GetCertificateAuthorityCsr
- 輸入証明書認証局証明書
- 証明書の発行
- 認証局一覧
- ARN: *
- Add Statementをクリックしてください。
- Select Type of Policy: IAMポリシー
- Effect: 許可する
- AWS Service: AWS Identity and Access Management(IAM)
- Actions:
- 役割ポリシーを添付する
- CreateAccessKey
- ロールの作成
- 役割を削除
- パスロール
- ARN: *
- Add Statementをクリックしてください。
- Select Type of Policy: IAMポリシー
- Effect: 許可する
- AWS Service: AWS Certificate Manager
- Actions:
- 証明書の説明
- 輸出証明書
- 証明書を取得する
- 証明書一覧
- 証明書のタグ一覧
- 証明書のリクエスト
- ARN: *
- Add Statementをクリックしてください。
- Select Type of Policy: IAMポリシー
- Effect: 許可する
- AWS Service: AWS Identity and Access Management Roles Anywhere
- Actions:
- プロフィールの作成
- CreateTrustAnchor
- プロフィールを取得する
- GetTrustAnchor
- プロフィール一覧
- リストトラストアンカー
- ARN: *
- Add Statementをクリックしてください。
- Generate Policyをクリックしてください。
- ポリシーは、プライベート CA 証明書の作成に必要なポリシーを作成する次の手順で使用するため、コピーします。
-
AWSコンソールに移動し、All ServicesからIAMを選択します。左パネルのPoliciesをクリックし、Create Policyをクリックします。

-
ポリシーをJSONタブにコピーします。Next: Tags をクリックし、Next: Review. をクリックします

-
Enter the Name (like netskope-ce-rolesAnywhere-policy), and click Save Changes.






プライベート認証局を作成する
-
AWSコンソールにログインしてください。
-
Certificate Managerを検索します。

-
AWS Private CAをクリックしてください。
-
Create a private CAをクリックしてください。

-
Mode Optionsには、General-purposeを選択します。
-
CAタイプのオプションについては、Rootを選択してください。

-
組織名(O)を入力してください。

-
「鍵アルゴリズム」オプションで、RSA 2048を選択します。


-
Add tags if any (optional).
-
「CA権限オプション」セクションのチェックボックスを有効にします。
-
「価格」セクションのチェックボックスをオンにします。
-
CA証明書を作成するには、 Createをクリックしてください。


-
ActionsからInstallを選択します。

-
Confirm and Installをクリックしてください。


トラストアンカーの作成
-
「IAM」サービスを検索し、「アクセス管理」の下のRolesに移動します。下にスクロールして「Roles Anywhere」に移動し、Manageを選択します。

-
Create a Trust anchorをクリックしてください。

-
Enter a Trust anchor name, like netskope-ce-trust-anchor.

-
Select AWS Certificate Manager Private CA(前の手順で作成したもの)を認証局(CA)ソースとして選択します。
-
必要に応じてタグを追加してください。
-
Create a trust anchorをクリックしてください。


-
作成したトラストアンカーをクリックし、以下をコピーします: Trust Anchor ARN

IAM ロールの作成
-
AWSコンソールでIAMサービスに移動してください。
-
アクセス管理サブメニューの Role をクリックします。
-
Create Roleをクリックしてください。

-
信頼済みエンティティタイプで、 Custom Trust Policyを選択します。

-
カスタム信頼ポリシーを以下に示す信頼ポリシーに置き換えます。このポリシーには、Roles Anywhereサービスを使うための権限が含まれています。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "rolesanywhere.amazonaws.com" ] }, "Action": [ "sts:AssumeRole", "sts:TagSession", "sts:SetSourceIdentity" ] } ] }
-
Nextをクリックしてください。
-
権限ポリシーで、前に作成したポリシーを選択します。

-
Nextをクリックしてください。
-
netskope-ce-roleAnywhere などのロール名とデスクリプションを入力します。
-
Create roleをクリックしてください。

-
AWS IAM Roles Anywhere認証メソッドのプラグイン構成パラメータRole ARNで必要になるため、Role ARNをメモしておきます。

プロフィールを作成する
-
Access managementの下にあるRolesを選択します。
-
下にスクロールしてRoles Anywhereをクリックし、 Manageをクリックしてください。

-
セットアップ手順を展開してください。
-
Step 2: Configure rolesをクリックしてください。
-
Configure a profileをクリックしてください。

-
Enter a Profile name, like netskope-ce-profile.
-
以前に作成したロール(netskope-ce-roleAnywhere)を選択します。

-
インラインポリシーを削除してください。
-
Create profileをクリックしてください。



-
作成したプロファイルをクリックし、Profile ARNをコピーします。

プライベート証明書をリクエストする
-
AWS Certificate Manager > Request certificateへ移動してください。
-
Request a private certificate Select 。

-
Nextをクリックしてください。
-
以前に作成した認証機関を選択します。

-
「Fully qualified domain name」フィールドに、netskope-ce.comのようなドメイン名を入力します。
-
キーアルゴリズムにはRSA 2048 Select 。

-
必要に応じてタグを追加してください。
-
証明書の更新権限を承認してください。
-
Requestをクリックしてください。

-
AWS Certificate Manager のナビゲーション ペインからList certificatesに移動します。
-
以前に作成した証明書Select 。

-
Exportをクリックしてください。

-
passphrase. を入力します。このパスフレーズは、AWS IAM Roles Anywhere認証方法を使用してAWS S3プラグインを設定する際に必要になるため、書き留めておいてください。
-
Generate PEM Encodingをクリックしてください。

-
Certificates は二度と表示されないため、すべてダウンロードしてください。新しい証明書については、再度エクスポートする必要があります。

詳細については、 AWS IAM Role Anywhereを参照してください。
AWSにデプロイされた構成
ロールを作成する
-
AWSコンソールでIAMサービスに移動してください。
-
Create roleをクリックしてください。

-
AWS ServiceをSelect 。
-
「使うケース」で、 EC2を選択します。
-
Nextをクリックします。

-
「ポリシーの作成」で作成した権限ポリシーSelect 。
-
Nextをクリックしてください。

-
netskope-ce-instance-role などのロール名と、デスクリプションを入力します。
-
Create Roleをクリックしてください。


EC2インスタンスにロールを割り当てる
-
EC2インスタンスのコンソールを開きます。
-
Instancesの下にあるInstancesをクリックします


-
Action > Security > Modify IAM Roleへ移動してください。

-
ロールの作成で作成したロール(netskope-ce-instance-role)を選択します。
-
Add IAM role/Modify IAM Roleをクリックします。EC2インスタンスとバケットの両方が同じリージョンにある必要があることに注意してください。

Fargateインスタンスにロールを割り当てる
-
CFNスクリプトを開きます。
-
Get the ExistingECSTaskRole parameter value if present.

-
IAM > Rolesへ移動してください。
-
ExistingECSTaskRoleパラメータ値を検索するか、NetskopeCloudExchangeTaskRole-<CFN name>を検索してロールを選択します。

-
以前に作成したポリシーをこのロールにアタッチします。
K8sインスタンスにロールを割り当てる
- K8sインスタンスを作成する際に、ServiceAccount用に作成されたロールを開きます。
- ポリシーの作成で作成したポリシーをアタッチします
AWS CloudWatchプラグインの設定
-
Settings > Plugin Storeへ移動してください。AWS CloudWatch v1.0.0 (CLS)プラグインを検索して選択してください。

-
プラグイン構成名を入力します。CEF形式を使う場合は、[AWS CloudWatch Default Mapping]ファイルが選択されていることを確認してください。
JSON形式でデータを取り込むには、基本情報の「形式」で「JSON」を選択します。 -
Nextをクリックして、設定パラメータを入力してください。
- Authentication Method: AWSクライアント認証に使うメソッドをSelectします。
「Deployed on AWS」は、Cloud Exchange が実行されている AWS 環境にアタッチされた IAM ロールを使用します。
AWS IAM Roles Anywhereは、X.509証明書と秘密鍵を使用して一時的なAWSクレデンシャルを取得します。AWS外部で実行されているCloud Exchange用です。 - Private Key: Certificate Bodyと一致するPEMエンコードされた秘密鍵。IAM Roles Anywhere CreateSessionリクエストに署名します。AWS IAM Roles Anywhere認証に必要です。
- Certificate Body: トラストアンカーで構成されたCAによって発行されたPEMエンコードされたX.509エンドエンティティ証明書。AWS IAM Roles Anywhere認証に必要です。
- Password Phrase: 秘密鍵が暗号化されている場合は、秘密鍵のパスフレーズ。AWS IAM Roles Anywhere認証に必要です。
- Profile ARN: IAM Roles AnywhereプロファイルのARN。形式:
arn:aws:rolesanywhere:{region}:{account-id}:profile/{profile-id}。AWS IAM Roles Anywhere認証に必要です。 - Role ARN: 引き受ける IAM ロールの ARN。形式:
arn:aws:iam::{account-id}:role/{role-name}。プラグインで作成する必要がある場合、ロールにはターゲットログストリームの logs:PutLogEvents、logs:CreateLogGroup、および logs:CreateLogStream が必要です。AWS IAM Roles Anywhere 認証に必要です。 - Trust Anchor ARN: IAM Roles AnywhereトラストアンカーのARN。形式:arn:aws:rolesanywhere:{region}:{account-id}:trust-anchor/{anchor-id}。AWS IAM Roles Anywhere認証に必要です。
- AWS CloudWatch Region Name: ターゲットのCloudWatchロググループを保持するAWSリージョン。AWS IAM Roles Anywhereを使う場合、このリージョンはプロファイルARNおよびトラストアンカーARNのリージョンと一致している必要があります。リストにないリージョンを入力するには Select Custom Region を選択します。
- AWS CloudWatch Custom Region: [AWS CloudWatch Region Name]がCustom Regionに設定されている場合のみ使用されます。それ以外の場合は空白のままにします。ロググループの有効なAWSリージョンコード。リストにないリージョン用(例:us-west-1)。AWS IAM Roles Anywhereは、aws、aws-cn、aws-us-govパーティションのみをサポートします。ISOリージョンやeusc-リージョンはサポートされません。
- Log Group Name: データが書き込まれるCloudWatchロググループの名前。このプラグインは、ロググループが存在しない場合に作成します。1~512文字で、文字、数字、および文字を含めることができます。– _ / #。
- Log Stream Name: ロググループ内のログストリームの名前。プラグインは、ログストリームが存在しない場合は作成します。長さは1~512文字で、: または * を含めることはできません。



- Authentication Method: AWSクライアント認証に使うメソッドをSelectします。
-
「Save」をクリックします。プラグイン設定は、「Log Shipper」>「Plugins」ページで利用できます。

AWS CloudWatchのログシッパービジネスルールを構成します
-
ビジネスルールページに移動してください。
-
デフォルトでは、すべてのアラートとイベントをフィルタリングするビジネスルールが設定されています。特定の種類のアラートやイベントを除外したい場合は、 Create New Ruleをクリックして、ルール名とフィルターを追加して新しいビジネスルールを設定します。

-
Saveをクリックしてください。

AWS CloudWatchのログシッパーのログ配信を設定する
- Log Shipperで Log Delivery に移動し、Add Log Delivery Configuration をクリックします。
- Select ソースプラグイン(CLS Netskopeまたはその他のソースプラグイン)、送信先プラグイン(CLS AWS CloudWatch)、およびビジネスルールを選択し、保存をクリックします。
- WebTxの場合は、Sourceプラグイン(CLS AWS Netskope LogStreaming)とDestinationプラグイン(CLS AWS CloudWatch)を選択します。
- ログ共有の場合、送信元プラグイン(CLS Cloud Exchange Logs)と送信先プラグイン(CLS AWS CloudWatch)を選択します。
- BWANイベントを共有するには、ソースプラグイン(CLS Netskope BWAN)と送信先プラグイン(CLS AWS CloudWatch)を選択します。
- Log Delivery を追加すると、Netskope テナントまたはソースプラットフォームからデータがプルされ、変換された後、AWS CloudWatch プラットフォームに取り込まれ始めます。

AWS CloudWatchプラグインを検証する
プルを検証する
Netskopeテナントからのイベント、アラート、ログ、BWANイベント、およびWebTxの取得を検証するため。
Cloud Exchangeで、Settings > Loggingに移動します。プルされたログを検索します。





プッシュ通知を検証する
Cloud Exchange でプラグインのワークフローを検証するには:
「Logging」に移動し、「message contains ingested」 というフィルタを使用して、取り込まれたEvents、Alerts、WebTx、Logsを検索します。取り込まれたログがフィルタリングされます。





AWS CloudWatch でのプッシュを検証するには、次を実行します。
AWSプラットフォームにログインします。

CloudWatch を検索してクリックします。

Logs > Log Analyticsに移動し、次のようなクエリを入力します。
SOURCE "arn:aws:logs:us-east-1:***********:log-group:<log_group_name>" START=-5m END=0s | fields @timestamp, @message | sort @timestamp desc | limit 10000 | filter @logStream like "<log_stream_name>"
取り込まれたアラートの例を以下に示します。

取り込まれたイベントの例を以下に示します。

BWANイベントがプラグインからAWS CloudWatchにどのように表示されるかは、次のとおりです。

CEログ用 AWS CloudWatch は、プラグインから AWS CloudWatch に次のように表示されます。

プラグインから AWS CloudWatch への WebTx データは次のようになります。

プラグインからAWS CloudWatchへJSONで共有される時のデータの形式は以下の通りです(解析前の形式):





選択したフィールドのみを持つカスタムマッピングを使用した、 JSON 形式の取り込まれたデータの例を次に示します。

AWS CloudWatchプラグインのトラブルシューティング
環境内にAWSクレデンシャルが見つかりません
Error message:
環境内にAWSクレデンシャルが見つかりませんでした。プラグインをAWS環境にデプロイするか、AWS IAM Roles Anywhere認証を使う
Possible causes:
- 「Deployed on AWS」認証方式が選択されていますが、CEホストにインスタンスプロファイルやIAMロールがアタッチされていません。
- AWS IAM Roles Anywhereが誤って構成されており、アンビエントクレデンシャルチェーンが意図せず使用されています。
What to do:
- CEホストに、必要なCloudWatchアクセス許可(logs:PutLogEvents、logs:CreateLogGroup、logs:CreateLogStream、logs:DescribeLogGroups、logs:DescribeLogStreams)が付与されたIAMインスタンスプロファイルがアタッチされているかを確認するか、認証方法を「AWS IAM Roles Anywhere」に切り替えてください。
- IAM Roles Anywhereを使用している場合は、Private Key、Certificate Body、Profile ARN、Role ARN、およびTrust Anchor ARNが正しく構成されていることを確認してください。
AWS IAM Roles Anywhereのアクセスが拒否されました
Error message:
アクセスが拒否されました。設定パラメータで提供されたプロファイルARN、ロールARN、信頼アンカーARNと、そのロールに割り当てられたポリシーを確認してください。
Possible causes:
- 設定ファイルで指定されたARNが一致していないか、間違っています。
- IAM ロールの信頼ポリシーが Roles Anywhere サービスプリンシパルを許可していません。
- IAMロールに、必要なCloudWatch Logs権限がありません。
What to do:
- プロファイルARN、ロールARN、およびトラストアンカーARNが正しく、AWSアカウント内の既存のリソースを参照していることを確認してください。
- IAMロールの信頼ポリシーがAWSのIAM Roles Anywhereサービスに必要な権限を付与しているか確認してください。
- IAMロールに、logs:PutLogEvents、logs:CreateLogGroup、logs:CreateLogStream、logs:DescribeLogGroups、およびlogs:DescribeLogStreamsの必要なCloudWatch Logs権限があることを確認してください。
AWS IAM Roles Anywhere のリソースが見つかりません
Error message:
リソースが見つかりません。設定パラメータで指定されたプロファイルARN、ロールARN、およびトラストアブカーARNを確認してください。
Possible causes:
- 構成されたARNの1つ以上が、存在しないプロファイル、ロール、またはトラストアンカーを参照しています。
- ARN 形式が正しくありません。
- ARNが、選択されたリージョンとは異なるリージョンに属しています。 AWS CloudWatch Region Name.
What to do:
- AWSコンソールにログインし、設定されたARNによって参照されるプロファイル、ロール、およびトラストアンカーが存在し、アクティブであることを確認してください。
- ARN形式が正しいことを確認してください:arn:aws:rolesanywhere:{region}:{account-id}:profile/{profile-id}。
- Profile ARN と Trust Anchor ARN のリージョンが、プラグインで構成された AWS CloudWatch リージョン名と一致していることを確認してください。
秘密鍵または証明書ボディが無効です
Error messages:
- 提供された秘密鍵が無効です。秘密鍵は有効なPEM形式である必要があります
- 無効な証明書本体が提供されました。証明書本体は有効なPEM形式である必要があります。
Possible causes:
- 秘密鍵フィールドに、有効な PEM エンコードされた秘密鍵が含まれていません。
- 「Certificate Body」フィールドに有効な PEM エンコード済みの X.509 証明書が含まれていません。
- パスワードフレーズが暗号化された秘密鍵に対して正しくありません。
What to do:
- 秘密鍵が —–BEGIN RSA PRIVATE KEY—– または —–BEGIN PRIVATE KEY—– で始まり、完全であることを確認してください。
- 証明書ボディが —–BEGIN CERTIFICATE—– で始まり、完全であることを確認してください。
- パスワードフレーズが秘密鍵生成時に使用されたパスフレーズと一致するか、鍵が暗号化されていない場合は空のままにしてください。
CloudWatchロググループにアクセスできません
Error messages:
- AWS CloudWatchロググループ「{log_group}」が存在しないか、アクセスできません。
- ResourceNotFoundException: 指定されたロググループが存在しません
Possible causes:
- プラグインで設定されたロググループ名が、指定されたAWSリージョンに存在しません。
- IAMクレデンシャルには、必要な logs:DescribeLogGroups または logs:CreateLogGroup 権限がありません。
- ロググループは、設定されているリージョンとは異なるリージョンに存在します。
What to do:
- CloudWatch Logs コンソールにログインし、構成されたリージョンにロググループが存在することを確認します。
- IAMロールまたはインスタンスプロファイルにlogs:DescribeLogGroupsおよびlogs:CreateLogGroupの権限があることを確認してください。
- ロググループが別のリージョンにある場合は、プラグイン設定の「AWSリージョン」フィールドを、ロググループの実際のリージョンに合わせて更新してください。
CloudWatchロググループのリージョンが一致しません
Error message:
AWS CloudWatchロググループ「{log_group}」が存在しますが、設定されたリージョン「{configured}」ではなく、リージョン「{actual}」にあります。
Possible causes:
- プラグインに設定されているAWSリージョンが、ロググループが存在する実際のリージョンと一致しません。
- CloudWatchロググループはリージョン固有のリソースです。
What to do:
- CloudWatch Logsコンソールにログインし、ロググループの実際のリージョンを確認します。
- プラグイン構成のAWS Regionフィールドを、実際のロググループのリージョンと一致するように更新します。
CloudWatch Logsへの書き込み時のアクセス拒否
Error message:
AccessDeniedException: ユーザーはリソース「{log_group}」に対して「logs:PutLogEvents」を実行する権限がありません。
Possible causes:
- IAMロールまたはインスタンスプロファイルに、必要なCloudWatch Logs権限が1つ以上不足しています。
- リソースベースのポリシーまたはサービスコントロールポリシー (SCP) がアクションをブロックしています。
- ロググループはAWS KMS暗号化を使用しており、IAMロールに対応するKMSキー権限がありません。
What to do:
IAMロールがターゲットロググループに対して以下のアクセス権を持っていることを確認してください。
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents",
"logs:DescribeLogStreams",
"logs:DescribeLogGroups"
],
"Resource": "*"
}
- CloudWatch Logs へのアクセスを制限している可能性のある SCP または許可境界が AWS 組織にないか確認します。
- ロググループが顧客管理型のAWS KMSキーで暗号化されている場合は、IAMロールにそのキーに対する kms:GenerateDataKey および kms:Decrypt の権限も付与されていることを確認してください。
CloudWatch Logsのレート制限
Error message:
ThrottlingException: ログのレートを超過しました:PutLogEvents
Possible causes:
- プラグインが送信しているログイベントのレートが、PutLogEventsに対するCloudWatch Logsサービスのクォータを超えています。
- 複数のCEインスタンスが同時に同じログストリームに書き込んでいます。
What to do:
- お使いのアカウントのCloudWatch Logsサービスのクォータを確認し、必要に応じて増加をリクエストしてください。
- 複数のCEインスタンスが同時に同じログストリームに書き込まないようにしてください。インスタンスごとに一意のログストリーム名を使用してください。
AWS CloudWatchに接続できませんでした
ユーザーに「{action}中にAWS CloudWatchに接続できませんでした。」というメッセージが表示された場合、ネットワーク接続、プロキシ設定、AWS CloudWatchのリージョン名を確認するか、「AWS CloudWatchへの接続中にエラーが発生しました」というメッセージが表示される場合は、次のいずれかの理由が考えられます。
- CEホストが、構成済みのリージョンのCloudWatch Logsエンドポイントに到達できません。
- Cloud Exchange で構成されたプロキシが正しくないか、リクエストをブロックしています。
- 設定されたリージョンが存在しないため、エンドポイントのホスト名を解決できません。
What to do:
- CEホストがポート443でlogs.{region}.amazonaws.comに到達できることを確認してください。
- Cloud Exchange のプロキシ設定を確認し、CloudWatch Logsエンドポイントがファイアウォールを通過できることを確認してください。
- AWS CloudWatchのリージョン名(またはAWS CloudWatchのカスタムリージョン)が、ロググループが存在するリージョンであることを確認してください。
バッチの失敗によりプッシュが停止しました
ユーザーに {total} のバッチ {n} が失敗したため、プッシュが停止しました。 {n} 個のログがすでにAWS CloudWatchに到達しており、再試行から削除されました。 {n} 個のログがCloud Exchangeによって再送信されます というメッセージが表示される場合、次のいずれかの理由が考えられます。
- プッシュの途中で、クレデンシャル、権限、またはネットワークのエラーが発生しました。
- AWSがターゲットログストリームのPutLogEvents呼び出しを制限しました。
What to do:
- このメッセージの直前に記録された特定のエラーを使用して、AWSクレデンシャル、ロググループに対するIAM権限、およびネットワーク接続を確認してください。
- ログ自体に対してアクションは必要ありません。Cloud Exchangeは未送信の残り分のみを自動的に再送信するため、ログの欠落や重複はありません。
- メッセージがスロットリングエラーで繰り返される場合は、アカウントの PutLogEvents クォータの引き上げをリクエストするか、追加のログストリーム全体にインジェクションを分散してください。
既知の動作
-
取り込まれたデータには、アクセント記号付き文字(英語)、英語以外の言語の文字、改行なしスペース、改行文字、その他の特殊な書式記号など、いくつかの要因によってエスケープ文字が含まれる場合があります。
例:
<14>Apr 07 09:32:56 alltypes CEF:0|Netskope|Mock Netskope Tenant|NULL|application|NULL|Unknown|act=Download appcategory=Cloud Storage applicationType=nspolicy browser=unknown \\u4ed5\\u4e8b cci=89 ccl=high device=Other dst=ef82::1a12:1234:1b12 os=unknown requestClientApplication=Box sourceServiceName=Box src=ef82::1a12:1234:1b12 suser=support@netskope.com timestamp=1743736484
ここでは、取り込まれた2つの日本語文字が、上のログで「\\u4ed5\\u4e8b」のように表示されています。
- 「DLPインシデントフォレンジックの取得」フィールドを「はい」に設定した場合、またはいずれかのフィールドの内容が非常に大きい場合、取り込まれたコンテンツにフィールド/データが欠落する可能性があります。
- 一部のフィールドが非常に大きく、Netskope Cloud Exchange がサポートする最大長を超えていることが確認されています。その結果、警告が表示される場合があり、残りの値がスキップされるため、取り込まれたイベントが不完全になる可能性があります。






