こんにちは。freee 基盤チーム Advent Calendar 2023 12/6の記事は、PSIRTのWaTTsonがお届けします。セキュリティの仕事をやっている新卒2年目です。
freeeでは会計や人事労務といった領域のプロダクトを提供していて、顧客となる企業の財務情報や給与情報のような、非常に機微な情報を扱うことがあります。このため、情報セキュリティには特に気をつけて対策をとる必要があります。
freeeのセキュリティに関する施策方針については、セキュリティホワイトペーパーにまとめて公開しています。この中で、データの取り扱いについては「セキュリティレベル」を定めてそれに応じた保護策をとる旨が記載されています。
プロダクトを作る際、機微な情報は適当に定めた信頼境界から外に出さないように運用して、情報漏洩などの被害が起きないように対策をすることになります。なので、レベルの高い情報は、例えばこのAWSアカウント内にしか置かない、とか、その中でも特定のこの場所にしか置かない、といった具合に、ある範囲に閉じ込められます。
その際、必要に応じてそこにアクセスする際には、何らかの認証・認可の仕組みで権限制御を行います。機微情報が信頼境界の外に出ないようにする上で、認証に使われるトークンやパスワードのようなクレデンシャル情報は、十分気をつけて管理する必要があります。
ところで、freeeでは社内のやりとりにSlackをよく用いています。freeeのカルチャーとしてはオープンな会話を推奨しており、特に機微情報を扱わないような場ではpublic channelを使って話すことが多いです。逆に言えば、普段よく使うpublic channelでは、機微な情報を出してしまわないように気をつける必要があります。これは、もちろんレベルSやAに該当する情報そのものもそうですし、そうした情報へのアクセスを握っているクレデンシャル情報についても同様です。せっかく認証・認可の仕組みで制御をしていても、本来知っているはずの人以外が見られるところに公開されてしまっては元も子もありません。public channelに書いてしまった場合は、アクセス履歴を確認したり、クレデンシャルをrevokeしたり、といったインシデント対応をすることになります。
もちろん、実際には単にクレデンシャルの漏洩だけではアクセスされないように二要素認証を導入したり、アクセスできる範囲を必要最小限に絞ったりといった対策を重ねる多層防御を行うので、実害が起きることはそう多くはありません。ですが、やはりこうした問題が起きるとそれなりに対処のための作業を行わないといけなくなります。人間はどうしてもミスをしてしまうものなので、会社が成長して開発者が増えてくると、だんだんそうした数も増えてきます。セキュリティでは一番脆弱なのは人間だなどと言われることがありますが、可能ならそうした部分についても教育・啓蒙などで穴を小さくしていきたいところです。
そうした状況に警鐘を鳴らすべく、こんな曲が誕生しました:
credentialをSlackに書くな高校校歌
ということで、今回はこの曲について解説します。
作曲の経緯
2022年10月、あるcredentialをSlackのpublic channelに書いてしまうインシデントが起きました。対応はすぐに行われ、特に実害はありませんでしたが、注意喚起が必要だという議論が沸き起こります。
その後、エンジニアのponさんによって実際にメロディーがつけられたものが投稿されました。
この原曲は、ピアノ伴奏にボーカル1声部の構成で作られたもので、音源は合成音声で付けられていました。楽譜に書き起こして見るとこのような形です:
この音源は、一部の人だけが入っているチャンネルで投稿されていたのですぐには広まっていませんでした。その後しばらく経ち、2023年8月、似たような注意喚起の話題が出た際に再び掘り起こされることになります。
これを目にした私が、何となくノリで作ったのが冒頭の男声四部合唱の動画でした。
合唱への編曲
私は小学生のころから合唱をやっており、大学生の時には大学合唱団で学生指揮者をしたこともありました。現在はどこの合唱団にも所属していませんが、多重録音を使い、全パートをそれぞれ歌って重ねることで、1人で合唱音源を作る、というのを趣味で時々やっています。
普段は既存の合唱曲を使って収録していますが、今回は元が単一声部の曲なので、まずは編曲をしないといけません。大学合唱団の学生指揮者をしていたときに楽曲分析と作編曲についても勉強したので、その知見を生かしていくことになります。
まず、原曲がどのような構成になっているのかを分析してみます。
この楽譜の下に付けたのが和声分析の記号です。上段の記号はいわゆる「島岡和声」と呼ばれている、日本で伝統的によく使われてきた和声記号で、下段の記号はディーター・デ・ラ・モッテ『大作曲家の和声』という本を参考にして付けたドイツ式の和声機能の記号です。
細かい話を説明するとあまりにも長くなってしまうので概略だけ書きますが、一般的な調性音楽の和声は「トニカ(T)」「ドミナント(D)」「サブドミナント(S)」の3種類の機能によって構成され、トニカで終わる一連の流れで和声フレーズが形成されます。
島岡和声では和音をその根音の音度をローマ数字で表した記号で示します。この曲のようにハ長調(イタリア音名でドレミファソラシ)の場合、Iの和音(ドミソ)がトニカの機能を示すため、曲の終わりはIの和音で終わることが多いです。また、ハ長調ではVの和音(ソシレ)は主にドミナントの機能を、IVの和音(ファラド)は主にサブドミナントの機能を示します。
和声フレーズにはよく使われる型があり、例えば「T→D→T」とか「T→S→T」といったいくつかの和声進行は「常用カデンツ」と呼ばれています。この曲ではベースが「T→S→D→T」という常用カデンツに近い形になっていますが、2小節目でDが2つ重なった記号で書かれている部分に少し特徴的な和声進行が使われています。ここで使われているレファ♯ラの和音は臨時記号を含んでいますが、これは次のVの和音(ソシレ)に対するドミナント和音として、部分的に転調されたような構成とみることができます。このような機能の和音を「ドッペルドミナント」と呼びます。
これらの機能は、クラシック音楽史でいえばバロック〜古典派くらいの時期に確立されたもので、和声理論では基礎として扱われる部分です。この原曲は、奇をてらったところがなくシンプルな構成でとても良くできた曲に思います。
さて、この曲は「校歌」として作られており、世の中の様々な学校の校歌と似たような雰囲気を示しています。編曲をするにあたっては、この「校歌」っぽい雰囲気を崩さないように作る必要があります。
校歌を校歌たらしめている特徴とはどういうものでしょうか?日本の学校は明治の終わりに小学校が多数できて、大正〜昭和初めにかけて中等・高等教育の学校が多数できた経緯があるので、学校の校歌もそのくらいの時代の音楽スタイルを反映していると考えられます*1。また加えて、校歌は多くの学生が揃って歌える必要があるので、歌いやすくするために、ある程度音域が絞られていたり、シンプルな旋律・和声で構成されることが多いです*2。
音楽の編曲には、「transcription」と「arrangement」の2種類の編曲があると言われています。前者は原曲をほぼそのままに編成を変えるもの、後者はより独創性を持って新しい曲に作り替えるものです。さらに独創性が増すと「paraphrase」や「fantasy」と呼ばれるものになっていきます。
今回の編曲では、単なるtranscriptionというよりは、少しアソビゴコロを入れたarrangementをやりたい、という方針をとることにしました。とはいえ、この曲はかなり短いので創意を入れられる部分が結構少ないです。その上で「校歌」っぽさを残すという条件も加わります。
この曲を「校歌」にしている要素として特に重要なのは、最後のV→Iの進行だと考えられます。和声分析ではしばしば「終止」という概念が重視されますが、特に曲の終わりの終止は曲全体の印象に大きな影響を与えます。なので、例えば最後の和音に7thとか9thの音を追加したりする編曲をすると、校歌というよりはジャズ調の曲に聞こえることになるでしょう。「校歌」っぽさを残す上では、この最後のV→Iの部分はできるだけそのまま残した方が得策です。
そこで、今回の合唱編曲では、「クレデンシャルをスラックに書く」のあたりの部分に創意工夫を入れてみる方針をとりました。
これは合唱編曲譜に和声記号を付けたものです。細かい記号の意味は置いておくとして、「クレデンシャルをスラックに書く」の部分を見ると、細かい記号がたくさん付いているのが分かります。臨時記号を使った半音進行を織り交ぜたりして、独特な和声感を生み出しています。
音楽の構造はよく「緊張」と「緩和」の繰り返しとして議論されます。この編曲では真ん中の半音進行てんこ盛りの部分で不安定な和音を鳴らすことで緊張感を高め、最後にV7→Iの進行で王道の安定した解決に向かうことで、ダイナミックな音の表現を行っています。「クレデンシャルをスラックに書く」という良くない行為を意味している部分に不安感を増した和声を使う形で、意味内容ともマッチした曲調になったのではないでしょうか。
ところで、今回の編曲では編成を男声合唱に変えました。これは私が多重録音をするという目的のための都合ですが、「合唱」という編成への編曲ではどういった部分に気をつける必要があるでしょうか?
合唱は人の声によって演奏します。なので、人の声で美しく出せるように作る必要があります。まず、校歌としての特徴でも挙げられたように、音域を人が出せる範囲に絞る必要があります。今回は男声合唱なので、男声の声域に収まる範囲にする必要があります。
また、人は複数の音を同時に出せないので、各声部には重音を入れることができません。4声部なら4つの音しか使えないので、7th、9thといった高次の音成分を含む和声では適当に構成音の省略を入れる必要があります。この技法については、和声学の中で、例えば第5音は省略されやすいとか、第3音は長短を特徴付けるので省略できないとか、いろいろなテクニックが知られています。
さらに、人の声は遠くの音への移動や不協和な音程への移動を苦手としているので、そういった旋律進行を避ける必要があります。実際のところ、現代の音楽ではあえてそういう進行を使って楽器的な効果を出したりするようなケースもあるにはあるのですが、今回は校歌の特徴としても「歌いやすさ」が重要なファクターなので、あまり奇をてらった旋律進行はしないように調整しています。
このあたりの構成は、クラシック音楽の和声学で"規則"として語られるようなものが多いです。というのも、ルネサンスのポリフォニックな教会音楽から機能和声が生まれる過程では合唱音楽が念頭に置かれていた部分が大きかったからです。器楽の演奏でも「歌うように」演奏すべし、とよく言われるとおり、声楽は西洋音楽において根源的な部分にある、という風に捉えることもできます。基本的には今回の編曲は和声法の基礎的な規則を大幅に破ることなく作るようにしています(なお、詳しい人が見ると分かると思いますが一部規則を破っているところはあります)。
なんか社内でバズってた
ということで、編曲して録音したものをSlackに上げたら、思った以上に反応がありました。
今では、Slackのカスタムレスポンスで「credentialをSlackに書くな高校校歌」と投稿するとこの動画か原曲の音源が返答されるようになっていて、時々話題に上がっているようです。
これはまあお遊びでやっているもので、真面目に効果測定とかをやっているわけではないですが、少しでもインシデントが減っていくと良いですね! ちなみに、もうちょっと真面目な方のインシデントについての話をCSIRTのmaoさんが書いているので、興味のある方はぜひそちらも読んでみてください: 2023年ほんとにあったインシデント 3選 - freee Developers Hub
ということで、12/6のfreee 基盤チーム Advent Calendar 2023 は「credentialをSlackに書くな高校校歌」の話でした!明日はat-kさんがOneLoginとTerraformを使った権限管理についての話を書いてくれるようです。お楽しみに!
*1:日本における校歌の誕生については、須田珠生『校歌の誕生』にいろいろと書かれています。
*2:校歌の作曲については以下のブログ記事も参照:
「校歌」作りのプロに聞く 100年後も歌われる曲はどう作る?
校歌作曲の楽しさ