プロダクトセキュリティチームの立ち上げ

はじめまして。セキュリティエンジニアの奥野(@okuken3)です。
弊社では2018年12月にプロダクトセキュリティチームを立ち上げ、脆弱性診断の一部内製化を中心とした各種セキュリティ施策に取り組んでいます。

本ブログ上でも、プロダクトセキュリティチームの取り組みについて定期的に発信していきますので、お楽しみいただければと思います!

なお、弊社におけるプロダクトセキュリティチームとは、「ウエディングパーク」をはじめとする弊社が開発運営しているWebサービス群のセキュリティを推進するチームになります。
ですので、これからセキュリティに本腰を入れようと考えているアプリケーションエンジニアの方や、セキュリティベンダーでWeb脆弱性診断担当をされていてユーザー企業の具体的な取り組みを知りたい/アドバイスしてあげたい方などに、参考にしていただければ嬉しく思います。

さて、定期発信の初回テーマですが、ずばり「プロダクトセキュリティチームの立ち上げ」です。
チーム立ち上げの経緯から始め、どのようにロードマップを描いて走り出したのかについて、当時を振り返りつつご紹介します。

続きを読む

社内にRedashを導入するまで

こんにちは!DBAを目指しているエンジニアの高嶋(@__1016t)です。
当社でダッシュボードツールである「Redash」を導入するときに課題となったこと、
それをどのように解決したのかを書きたいと思います。

Redash導入の背景と目的

ウエディングパークでは施策を考えたり、効果検証をするときのデータを
都度SQLを書いて抽出しています。

データの抽出はエンジニアが行うことになっているので、
ディレクターに必要な項目、抽出する条件をまとめて依頼をしてもらい、
担当エンジニアがヒアリングしながらSQLを書いています。

この運用でずっとやってきたのですが、施策や人が増えていく中で
以下のような課題が出てきました。

・たくさんの依頼によるエンジニアの工数圧迫
・工数を圧迫する懸念から、ディレクターが依頼をする心理的ハードルが高い
・ディレクターがほしいとおもったタイミングでデータを見ることができない

これらの課題を解決するため、Redashの導入が決まりました。

導入にあたってSuperset と Redashを比較した記事もあるので、ぜひご覧ください!
Redash と Superset を比較検証してみた

続きを読む

AWS CLIとAmazon Lightsailを使ってVPN回線をサクッと構築する

はじめに

エンジニアの久保です。
最近プライベートで海外に行きました。
街中の無料wifiを使うとき、情報検索程度ならよいのですが個人情報を入力するときはセキュリティ面で少し心配です。
また、海外に行った場合は、国内の回線からインターネットに接続したくなることもあります。
そんなときのために、個人的に利用できるVPN(Virtual Private Network)を用意しました。

今回は AWS CLI を使って、Amazon Lightsail 上にVPNサーバをサクッと構築してみます。

利用したもの

Amazon Lightsail

AWSが提供するVPS(Virtual Private Server)サービスです。
同社の Amazon EC2 に対して次の特徴があります。

  • ストレージやネットワーク(ロードバランサ、DNSなど)の設定がパッケージされている
  • 月額固定料金

LightsailはEC2に対して、必要な設定が最初からパッケージとして含まれているため、初心者にとっては使いやすいサービスです。
他方で、高度な設定はできないため柔軟な設定を行いたい場合はEC2を使った方がよいでしょう。
個人的な用途などでカジュアルにサーバ構築をしたい場合は、Lightsail で十分といえるでしょう。
https://aws.amazon.com/jp/lightsail

続きを読む

新卒2年目が作るエンジニア新卒研修(2019年度)

こんにちは。ウエディングパーク新卒2年目エンジニアの永井(@__south__373)です。
今年のエンジニア新卒研修を担当させていただいたので、ウエディングパークの新卒研修ではどんなことをしているのか、どうやって進めたのかについて書きたいと思います。

エンジニア研修の概要

ウエディングパークでは毎年4月から6月まで3ヶ月間のエンジニア研修を行い、7月から本配属となります。
3ヶ月間でウエディングパークの開発に必要な基礎知識を学びます。

ディレクターは、エンジニアの仕事内容を知ることにより
開発ディレクション時にスムーズにコミュニケーションが取れるようになるので、
4月のみ一緒にエンジニア研修を受け、5月から本配属となります。
同様にディレクター研修において、エンジニアにも必要な項目は一緒に受けています。

3月中旬頃に研修担当として、私(新卒2年目)と中途1年目の先輩がアサインされました。
そこから半月ほど準備を進め、3ヶ月間の研修を迎えることとなります。

続きを読む

Lambda@Edgeを利用して画像リサイズ機能を実装した

こんにちは。フォトウエディングの撮影スタジオ検索サイト「Photorait(フォトレイト)」を担当しているエンジニアの武田(@takedajs)です。

Photorait(フォトレイト)では入稿された画像をリサイズしてから保存し、公開側に合った大きさの画像を表示しています。動的に画像をリサイズする機能をまだ導入していないので、検証も兼ねて実装してみました。

Lambda、API Gateway、ImageMagickを利用した画像リサイズ機能を書いた記事が過去に投稿されていますが、今回の記事では、Lambda@Edgeとsharpを利用した画像リサイズ機能の実装について書きました。

やってみよう!AWSでWEBサーバー環境構築(Lambda|API Gateway|シリーズ第4回)

続きを読む

Google Ads Scripts(旧:GoogleAdwords Script)設計時に注意すべき3つのポイント

こんにちは。サーバーサイドエンジニアの杉浦です。
私がGoogle Ads Scripts(旧:GoogleAdwords Script)の開発を始めてから、約半年が経ちました。
今回は、これからGoogle Ads Scriptsの開発をされる方向けに、設計に必要なTipsをご紹介しようと思います。

開発時に考慮すべきこと

どのアカウントの情報を取得・操作するか

Google Ads Scriptsは、MCCアカウントに対して設定することも出来ますし、各アカウントそれぞれに設定することも出来ます。
そのため、1つのアカウントの情報取得したいのか、複数のアカウントの情報を取得したいのかを開発の前に決める必要があります。

例えば、このような構造をしたアカウントを運用していたとしましょう。

このとき、
1. アカウントA~Eのデータを取得したい⇒MCCアカウント①にscriptを設定
2. アカウントC~Eのデータを取得したい⇒MCCアカウント②にscriptを設定
3. アカウントAのデータだけを取得したい⇒アカウントAにscriptを設定
4. アカウントA・C・Eのデータを取得したい⇒MCCアカウント①にscriptを設定 かつ 特定のアカウントが判断できる要素を設定
となります。

特定のアカウントを指定するためには、アカウントIDを指定したり、ラベルで判断することが出来ます。アカウントIDを指定する場合、対象のアカウントが変更される度にScriptを修正しなくてはなりません。個人的にはアカウントにラベルを設定し、そのラベルが貼られているアカウントをデータ抽出対応とすることをお薦めいたします。

続きを読む

Google Ads Scripts入門③

こんにちは。サーバーサイドエンジニアの杉浦です。
前回は、Google広告(旧:GoogleAdWords)のデータをキャンペーンパフォーマンスレポートを使って取得する方法をご紹介しました。
今回は、アカウントパフォーマンスレポートから、前日にCVの上がったアカウント一覧をメールで送信する方法をご紹介します。

前提

Google広告を運用しているGoogleアカウントがあること

入門内容

アカウントパフォーマンスレポートより、下記項目を取得し、HTMLメールを送信することを目標とします。
Google広告画面でのイメージとしては、対象MCCアカウントの「アカウント>掲載結果」に表示される項目を取得します。

  • アカウントID
  • アカウント名
  • コンバージョン
  • 表示回数
  • クリック数
  • 費用
  • CTR
  • CPC

続きを読む

mysqldump と mysqlpump どちらが速くバックアップできるか比較してみた

こんにちは。エンジニアの阿久津です。
今回はMySQLの mysqldumpmysqlpump という2つのコマンドでバックアップを実施しどちらが速く処理するのか比較してみましたので、それを記事にしたいと思います。

mysqldumpとは

従来のMySQLデータベースのバックアップ/リストアに用いられるコマンドです。

mysqlpumpとは

MySQL5.7から追加された新機能で、 mysqldump の次世代となるコマンドです。

機能紹介

1. 並列処理(並列ダンプ)

複数のデータベース・テーブルを並列処理でバックアップすることができます。
MySQLサーバからデータを収集するために複数のスレッドを作成し、そのスレッドがそれぞれMySQLサーバへ接続してデータをまとめるためにキューに取得したデータを挿入する仕組みになっています。
オプションを何も利用せずにデフォルトで mysqlpump を利用すると、スレッド数は2つ、キュー数は1つでダンプ処理が走ります。
–parallel-schemas オプションと –default-parallelism を使うと、スレッド数とキュー数を調整しながら、ダンプを実施できるみたいです。

続きを読む

Google Ads Scripts入門②

こんにちは。サーバーサイドエンジニアの杉浦です。
前回は、Google広告(旧:GoogleAdWords)のデータをGoogle Ads Scripts (旧:Google AdWords Scripts)を使ってスプレッドシートに出力する方法をご紹介いたしました。
今回はGoogleAdWordsAPIを使って、キャンペーンパフォーマンスレポートから取得したデータを出力する方法をご紹介します。

前提

Google広告を運用しているGoogleアカウントがあること

入門内容

キャンペーンパフォーマンスレポートより、下記項目を取得することを目標とします。

  • アカウントID
  • アカウント名
  • 表示回数
  • クリック数
  • コンバージョンアクションが「購入」のコンバージョン数

続きを読む