Private Logs Viewer
「Google Cloud Audit Logging は本当に使いやすく、BigQuery と統合すれば、すべてのアプリケーションを 1 か所で監視できる強力なツールになります」 — Darren Cibis, Shine Solutions
SetIamPolicy
Copyright 2017 Google Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. 'use strict'; exports.processFirewallAuditLogs = (event) => { const msg = JSON.parse(Buffer.from(event.data.data, 'base64').toString()); const logEntry = msg.protoPayload; if (logEntry && logEntry.request && logEntry.methodName === 'v1.compute.firewalls.insert') { let cancelFirewall = false; const allowed = logEntry.request.alloweds; if (allowed) { for (let key in allowed) { const entry = allowed[key]; for (let port in entry.ports) { if (parseInt(entry.ports[port], 10) !== 22) { cancelFirewall = true; break; } } } } if (cancelFirewall) { const resourceArray = logEntry.resourceName.split('/'); const resourceName = resourceArray[resourceArray.length - 1]; const compute = require('@google-cloud/compute')(); return compute.firewall(resourceName).delete(); } } return true; };
index.js
package.json
{ "name" : "audit-log-monitoring", "version" : "1.0.0", "description" : "monitor my audit logs", "main" : "index.js", "dependencies" : { "@google-cloud/compute" : "^0.4.1" } }
「Google は、GCP 利用者の暗号化とキー管理に関するユース ケース全てを Cloud KMS の導入でカバーしました。Cloud KMS は、マルチテナント型クラウド サービスでも暗号化キーの管理を可能にし、オンプレミスのキー管理システムや HSM のメンテナンスの必要をなくすことで、ギャップを埋めたのです。」 — Garrett Bekker, Principal Security Analyst at 451 Research
「Google は、デフォルトで行われる暗号化がどのようなものか明確にしていますし、Cloud KMS は、ベスト プラクティスの実装を容易にしてくれます。たとえばキーの自動ローテーション機能が、キーをオーバーヘッドなく頻繁にローテーションしてくれることは、社内コンプライアンスの要求にも適合します。頻繁に行うオペレーションにも、低レイテンシの Cloud KMS であれば利用できます。結果として、暗号化すべきデータの範囲を機密データだけでなく、インデックス化の必要もない運用データにまで広げました。」 — Leonard Austin 氏、Ravelin の CTO
textPayload: “Successfully sent to Google Cloud Logging API”
<configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> </configSections> <log4net> <appender name="CloudLogger" type="Google.Cloud.Logging.Log4Net.GoogleStackdriverAppender,Google.Cloud.Logging.Log4Net"> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%-4timestamp [%thread] %-5level %logger %ndc - %message" /> </layout> <projectId value="YOUR-PROJECT-ID" /> <logId value="mySampleLog" /> </appender> <root> <level value="ALL" /> <appender-ref ref="CloudLogger" /> </root> </log4net>
log4net.Config.XmlConfigurator.Configure();
protected void Application_Start() { GlobalConfiguration.Configure(WebApiConfig.Register); // Configure log4net to use Stackdriver logging from the XML configuration file. log4net.Config.XmlConfigurator.Configure(); }
using log4net;
// Retrieve a logger for this context. ILog log = LogManager.GetLogger(typeof(WebApiConfig)); // Log some information to Google Stackdriver Logging. log.Info("Hello World.");
using Google.Cloud.Diagnostics.AspNet;
public static void Register(HttpConfiguration config) { // Add a catch all for the uncaught exceptions. string projectId = "YOUR-PROJECT-ID"; string serviceName = "NAME-OF-YOUR-SERVICE"; string version = "VERSION-OF-YOUR-SERVICE"; // Add a catch all for the uncaught exceptions. config.Services.Add(typeof(IExceptionLogger), ErrorReportingExceptionLogger.Create(projectId, serviceName, version)); }