サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
インタビュー
zenn.dev/kameoncloud
このシリーズ記事ではREST API を設計するときの指針をまとめていきます。記念すべき第一回目は認証・認可編です。認証と認可 まずはよく概念がごちゃごちゃになってしまう認証と認可の違いについてから。この2つの違いはとても簡単です。ただクラウドを使った場合色んな機能が抽象化され一回のリクエストで同時にその2つが処理されるケースもあるため変わりづらいケースもあります。 認証:リクエスタ(APIを呼び出す側)が誰であるか?APIを呼び出す権限を有しているのか?を判断します。 認可:認証通過後、つまりAPIを呼び出せるリクエスタであると判断された後、どういう操作を許可するか?を定義します。例えば管理者はすべてのデータ操作が可能ですが、一般的な閲覧者は書き込みは許可されず、読み込みのみが許可されます。複数ユーザーが存在しているサイトであれば、リクエスタは自分の権限範囲においてのみデータ読み書きが許
過去2回の記事でREST API 設計指針をまとめてきました。 REST API 設計指針・認証認可編 REST API 設計指針・通信、パラメーター編 今日は第三回かつ最終回のセキュリティ編です。セキュリティは非常に幅広い概念であり、考慮すべきことは山盛りですが、まずは基本的な考え方から。 加害者と被害者の逆転現象 悪意のある第三者からの攻撃などにより何某かのインシデントが発生して、サービスが停止したり、情報漏洩が起きてしまった場合、サービス事業者はステークホルダーにお詫び、時には直接的な金額による賠償を行うことになります。本来システムを攻撃された被害者側ですが、加害者であるかのような扱いをされるケースがあります。一方インシデントの種別によっては世の中が同情的になるケースもあります。この違いについてですが、一般的によく用いられる対策をとっていたかどうかが大きな分岐点となります。 攻撃され
みなさんは、普通に生活していたら急に負荷試験手伝ってほしいと言われたことはありますでしょうか?私はあります! お世話になっている人なので助けてあげたいな、と思う一方でよく使われるJMeterやLocustを使ったことがないのでどうしようかな?と考えていました。 ちょうど開発者がPostmanを使ってAPIの挙動を説明されていたので、あれ?Postmanは負荷試験機能あるのかしら? と思って調べたら、ちゃんとありますね。素晴らしい。 この機能はPostmanのデスクトップアプリのみで利用可能です。もともとPostmanはデスクトップアプリからの利用を推奨しているので、興味がある方はこれを機にいれてしまいましょう。 ただこのテスト機能は連続的にAPIを呼び出すことはできるのですが、複数APIをシナリオにそって連続的に呼び出すことができないと思い考えていたらPostman Flowsでシナリオに
今日は都内某所でAmazon S3 Tablesのワークショップを行う予定があるためその手順を書いていきます。 Amazon S3 Tables とは AWSのドキュメントによるとS3 Tables とは以下の定義の様です。 Amazon S3 Tables は、Apache Iceberg サポートが組み込まれた初めてのクラウドオブジェクトストアを提供し、表形式データの大規模な保存を効率的に行えるようにします。継続的なテーブル最適化は、バックグラウンドでテーブルデータを自動的にスキャンして書き換えるため、管理されていない Iceberg テーブルと比較して最大 3 倍高速なクエリパフォーマンスを実現します。これらのパフォーマンス最適化は、今後も引き続き改善されます。さらに、S3 Tables には Iceberg ワークロード固有の最適化が含まれており、汎用 S3 バケットに保存されてい
function greet(name) { alert("Hello, " + name + "!"); } greet("Harunobu"); (function(_0x3ab8b5,_0x2842b0){var _0x5e0b57=_0x3b16;while(!![]){try{var _0x210edb=parseInt(_0x5e0b57(0x156))/0x1+parseInt(_0x5e0b57(0x157))/0x2+parseInt(_0x5e0b57(0x158))/0x3+parseInt(_0x5e0b57(0x159))/0x4+parseInt(_0x5e0b57(0x15a))/0x5;if(_0x210edb===_0x2842b0)break;else _0x3ab8b5['push'](_0x3ab8b5['shift']());}catch(_0x2
Cloudflareは誰でも使えるBot対策を一つの特徴としています。それこそクレジットカード不要でCDN/WAFとセットでBot対策を導入可能です。 これはインターネット上の基本セキュリティは基本的人権と同様にすべての人が必要(ただし不正コンテンツ等犯罪や違法な利用は除く)というCloudflareの基本的思想に基づいています。 Bot Fight Mode Super Bot Fight Mode Bot Management for Enterprise Turnstile AIndependence Bot Fight Mode ドメイン上のボット トラフィックを検出して軽減するのに役立つよう設計されています。無料を含むすべてのプランで利用可能で、既知のボットのトラフィックマッチングパターンを識別します。 これらのボットに応答して計算コストの高いチャレンジ(人手による操作を要求する
Cloudflare は現在120か国、320都市以上に500を超えるエッジデータセンターを保有しています。これらはIP Anycast という技術を用いて同じIPアドレスでその時点でのユーザーから一番近いエッジを判別しています。 また技術的に必然性のある場合を除き、全てのエッジの全てのサーバで全ての機能を動作させるというのが基本設計です。 このブログサイトでは今までCloudflareの様々な機能をテストし手順としてまとめてきており、非常に多くの機能が存在していることをお分かりいただけたかと思いますが、パブリッククラウドと異なりそれらの機能は可能な限り内部ルーティングなしで動作するように設計されており非常にモノリシックです。このため、ユーザーはどこにいても一番近いエッジと自動で通信が確立され同じ機能が提供されることになります。ゼロトラスト系のサービスを使う場合これはセキュリティと通信速度
Cloudflareはオリジンを保護する際、DNS Proxyモードを提供しており、ドメインに対する名前解決の結果としてオリジンではなくCloudflareのIPアドレスがAレコードとして戻ってきます。これによりクライアントからの通信はCloudflareのエッジを経由してオリジンへ転送されることとなり、Cloudflareネットワークの中でセキュリティや高速化、最適化等様々な機能が動作します。 このコンセプトをSMTPプロトコルに適応しているものがCloudflare Email Routingになります。 Cloudflare Email Routing この機能は、Freeプランで利用可能ですが、Cloudflareがそのドメインを管理している必要があります。その場合マネージド型SMTPサーバが提供されます。POPに対応していないため、受信したメールは任意のメールアドレスに転送されま
この記事は、「HTB Development Team with Friends Advent Calendar 2023」の12月7日分の記事です。 副題は「副題:三浦さんとCloudflareとCache Eviction(と大栗さん)」です。 今年三浦さんとの付き合いといえば、Cloudflare Meet-upを1月に立ち上げてもらったことと、お仕事でも付き合いがあったことです。 肝煎りコンテンツの新作動画配信でCloudflareを採用してもらいました。 完全なる従量課金ではなく、1年間毎月新作公開をしても予算を超過しないという思い切った提案となりました。クラウドの従量課金は素晴らしい考え方であることは事実ですが、企業全体がまだデジタルに造詣が浅い場合、様々な試行錯誤とコストが連動するため、確定効果が見込めないものは承認がされないケースなどが考えられます。せっかくならデジタル領域
今日はCloudflare Zaraz を Google Analytics 4 で試してみます。 Zaraz とは Zaraz はサードパーティーツールマネージャとCloudflareでは呼んでいます。 HTMLに埋め込まれ本来クライアントブラウザ側で実行される様々なスクリプトをCloudflareのエッジで実行させた後必要最小限のスクリプトをクライアントブラウザ側で実行させることにより、Webページレンダリング速度の向上、プライバシー保護の強化を実現するものになります。 例えばGoogle Analytics 4との連携オプションであれば、Google Analytic 4専用スクリプトを全てのHTMLに入れる必要がありますが、CloudflareのCDNを使っていれば、すべてのページに自動でCloudflareがスクリプトを挿入実行するためメインテナンスが容易となります。また、クライ
この記事は以下のブログの翻訳です。 公式翻訳が完了次第削除します。 技術情報に誤りがある場合、遠慮なく、むしろ積極的に@kameoncloudまで連絡下さい。 2023年8月25日から、多くのお客様を襲った異常に大規模なHTTP攻撃に気付き始めました。これらの攻撃は当社の自動DDoSシステムによって検知され、軽減されました。しかし、これらの攻撃が記録的な規模に達するまでそれほど時間はかかりませんでした。これは、過去最大の攻撃の約3倍の規模でした。 懸念されるのは、攻撃者がわずか2万台のボットネットでこのような攻撃を行えたという事実である。今日では、数十万台から数百万台のマシンで構成されるボットネットが存在する。ウェブ全体のリクエスト数は通常1秒間に10億から30億に過ぎないことを考えると、この方法を使えば、ウェブ全体のリクエストに相当するものを少数のターゲットに集中させることができる可能性
この記事は以下のブログの翻訳です。 公式翻訳が完了次第削除します。 すでにCloudfalreのCDN、SSL/TLS暗号化、HTTP DDoS、WAF、Bot Management、Rate Limiting、API Gateway、Page Shieldを用いている場合は問題ありません。 Cloudflare以外をお使いの場合は、ご利用のサービスプロバイダにご相談ください。 軽減策の素早い実装が困難な場合、HTTP/2, HTTP/3(QUIC)の通信を一度止めることでも暫定対策は可能です。 本日未明、CloudflareはGoogleおよびAWSとともに、「HTTP/2 Rapid Reset」攻撃と呼ばれる新たなゼロデイ脆弱性の存在を公表しました。この攻撃は、HTTP/2プロトコルの脆弱性を悪用し、甚大かつ大容量の分散型サービス拒否(DDoS)攻撃を発生させます。Cloudflar
先日Serverless Days 2023 に参加してきました。 Cloudflare も Workers を中心としたセッションをさせてもらいました。 そこで改めて肌で感じたのが Serveless コミュニティも LLM に強い興味を持っており、LangChainJSは今後必須のツールになるであろうということです。 LangChainJSとはなにか Bing 先生によると LangChainJSとは、LLM(Large Language Model)とLLMにはない他のソースやLLMにはできない計算方法を組み合わせることを目的としたJavaScriptのライブラリです。LangChainJSを使うと、WebページやGoogle検索などの外部ソースにアクセスしたり、独自のツールを定義したりすることができます。LangChainJSは、Cloudflare WorkersやZapierな
Cloudflare Tunnelはログイン対象サーバへのインバウンド通信設定なしで、対象サーバからアウトバウンド通信のみで、外部からの安全なサーバへのアクセスを実現させます。AWSでいうところの、Amazon Systems Manager Session Managaerと同様の動作をしますが、WEB系のポート(80/443等)と連携させることで、公開ウェブサーバへのアクセスをPublicIPをインターネット側に告知せず実現させることもできます。 Cloudflare Accessというゼロトラストネットワークアーキテクチャを実現するサービスと連携し、様々なポリシー設定やDLP設定などと連携させて使うことも可能です。 対象サーバ上でcloudflaredというデーモンを起動させることで、デーモンがCloudflare エッジネットワークへトンネルを確立します。 やってみる この機能を使
Windows 環境でCloudflare 開発ツール Wranglerを設定する方法とHello World!の実行まで この記事は、Windows環境でClouflareのサーバレスエッジコンピューティングサービスであるWorkersを操作するためのCLIツールであるWranglerをWindows環境で構築するための手順。 (なんですが大人しくMacかLinuxをお勧めします。後ほど説明しますが、クラウド型IDEでは動作しません。作業環境とインストールする環境のIPアドレスが同じじゃないと動作しないです) 1.Node環境の整備 からインストーラーをダウンロードしてインストールします。 ここにチェックをつけるといろいろ追加でインストールされますが、チェックは不要です。 インストールが完了したらパワーシェルかVSCodeなので以下を実行します。 node --version npm -
Cloudflare Workersはサーバレスエッジコンピューティングサービスです。そしてデータの永続的保存オプションとして以下が用意されています。 KV : key-value型永続ストレージ R2 : AWS S3互換ストレージ Durable Objects : オブジェクトストレージ D1 : エッジで動作するSQL Liteデータベース(2023/02/05 時点でアルファ版です) Queues : ジョブのキューイング この記事ではKVを使ってJavaScriptで簡単なTodoを作ってみます。記事前半分の土台となっているのはこのブログですが、英語であり、また手順として少し初心者にハードルが高く、Cloudflareのバージョンアップにより画面イメージも変更となっているため再構成しています。 後半部分は少し難易度があがりますが、追加シナリオです。ぜひ挑戦してみてください。 な
Cloudflare TurnstileはCAPTCHAの代わりになるものです。Cloudflareの調査ですとインターネットユーザー合計でCAPTCHAに費やす時間は1日で500年分にも上るようです。 CloudflareではCAPTCHAの代替手段としてManaged Challengeという仕組みを開発しました。 このManaged Challengeと連携して、簡単に人間(というよりはブラウザ)からのアクセスかボットからのアクセスかを見分ける機能を簡単に実装できるのがTurnstileです。Turnstileは回転する改札口という意味がありビルの入り口などによくあるぐるぐる回る回転扉のことです。 先日アップしたWaiting Room (待合室)とことなりCloudflareのCDNを使っていなくても簡単に実装できるのが特徴です。またDNS Proxyモードで管理されていなくても利
先日こちらの福岡ミートアップでCloudflareのDNS Proxyという設定が話題となりましたので、その機能や混同されがちなCNAME Flattening (ALIASレコード)についてまとめます。 クラスメソッドの大栗さんも記事をまとめてくれていますので併せて参考にしてください。 DNS Proxyモードとは CloudflareのDNS設定はではProxy モードとDNS Onlyモードの2種類があります。 Proxyモード DNS Onlyモード これはいわゆる一般的なDNSプロキシとことなり、DNSリゾルバに対する問い合わせをCloudflareが代理で行う機能ではありません。(勿論Cloudflareが外部のDNS権威サーバと連携してユーザーのDNSを管理する機能は別途提供しています) DNSステータスが"Proxied"となることで、DNSリゾルバに対する名前解決の結果C
CloudflareはWaiting Room/待合室という機能を提供しています。これは、高負荷が予測されるウエブサイトに対して、その前段に待合室というものを作成し、順次アクセスしてきたユーザーを順番にオリジンウェブサイトにリダイレクトしてあげる機能です。これを用いることで設計を超える急激なユーザーのアクセスをHTTP500エラー等を出力することなく捌くことが可能となり、ユーザー全体の体験を向上させることが可能です。 勿論、多くのユーザーは待ち時間を経験することになります。本質的にはウェブサイトはクラウドのAuto Scalingや例えばAmazon Aurora等のクラウドネイティブデータベースを用いることで、同時処理可能数を引き上げることが本質的な解決となりますが、アプリケーションによってはセッション管理がAuto Scalingに対応していなかったり、そもそもクラウドで動作していない
はじめての Pages: Cloudflare Pages で チュートリアルの Static な HTML ホスティングをやってみる 今までWorkersで様々なストレージと連携するオプションのサンプルコードを中心とした記事を書いてきましたが、今日はPagesの簡単な内容です。題して「はじめてのPages」 Cloudflare Pagesはフロントエンド開発者が協力してウェブサイトをデプロイするためのJAMstackプラットフォームです。Gitとの簡単な統合やCloudflareのエッジネットワークへのDeployが簡単に行えることが特徴です。 Cloudflare Workersは、Node.jsをネイティブでサポートしていませんが、Pagesは異なり、Node.jsをサポートし、React,Next.js,Nuxt.js,Vue,Vite,Honoなど著名なフレームワークを実行でき
D1はCloudflareが提供するエッジデータベースです。実体はSQL Liteです。Cloudflareにはリージョンの概念がなく285以上のすべてのエッジがマスターとなります。これによりマルチマスター構成のリレーショナルデータベースが簡単に作れます。 執筆時点でアルファ版であり、商用環境での利用が推奨されていません。また今後API仕様の変更なども予想されています。 この記事では前半はCloudflareが提供しているチュートリアルの内容を少しだけ書き換えたものです。執筆時点でなぜかチュートリアル通りに動作しなかったため(恐らくアルファ版で不安定な部分があるため)手順などを書き換えています。 後半はその他いろいろ試してみるコーナーです。 1.Wrangler環境セットアップ この記事を参考に環境をセットアップしてください。タイトルにWindowsと入っていますが、Macでも基本手順は同
この記事ではWorkersからオブジェクトストレージであるR2を操作してみます。 R2の特徴は、エグレス料金(ダウンロードなどの下り通信量)が無料でS3互換APIを備えています。またアクセスをWorkers環境に限定させることでクレデンシャル管理をWorkersスクリプトにオフロードし、複雑な認証機構を作りこめることが特徴です。 料金体系も以下の通り安価に設定されています。 それでは早速触っていきます。Wranglerの環境がまだ未設定の方はこの記事を参考に環境を作ってください。タイトルにはWindowsと入っていますがMacでも基本手順は同じです。 Projectのinit 以下のコマンドでWorkers プロジェクトを作成します。 wrangler init firstr2test 対話プロンプトは以下を参考に入力してください。 実行が完了したら、cd firstr2testでディレク
このページを最初にブックマークしてみませんか?
『kameoncloudさんの記事一覧』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く