1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Akamai Site Shieldの更新をGithub Actionsを利用してLinode Firewallへ自動的に適用する

Posted at

Akamai Site Shiled とは

Site Shieldはアカマイが提供するオリジンWebサーバーの保護機能です。アカマイWAFなどのクラウドベースのセキュリティ保護機能を常に適用するには、セキュリティ保護機能をバイパスしてオリジンサーバーに直接攻撃者のアクセスが到達しないように防御するしくみが必要です。クライアントがオリジンに直接アクセスすることを禁止し、Akamai Intelligent Edge Platformを経由したウェブトラフィックのみが通過できるよう、オリジンの手前に設置したレイヤ3/4ファイアウォールで制御すれば、オリジンは、各種のセキュリティ対策で検査されたリクエストのみを受け取れるようになります。

Site Shieldはオリジンサーバーとの通信を行うAkamai Edgeサーバーを限定する機能です。(Site Shield サーバーのソースIPのみをオリジン側の許可リストに登録することで、バイパスを防止するアクセス制御を可能とします。

image.png

Akamai Site Shieldの更新をGitHub Actionsを利用してLinode Firewallへ自動的に適用する

Site Shieldでオリジンサーバーにアクセスを行うIPアドレスのレンジは定期的に追加や削除が行われます。そのため運用の際には、Firewallに設定しているアクセスリストの更新も必要となります。

今回はこのSite Shieldの更新作業をGitHub Actionsを利用して、Linode Firewallに自動適用してみます。

image.png

手動にてSite Shieldの更新を行う場合の手順はこちらです。

参考:Site Shieldの設定方法と確認(運用・更新編)

執筆時点でNodeBalancerにFirewallは適用できないため、インスタンスへの通信保護としてのFirewallの利用を前提としております。

GitHub Actions とは

GitHub Actionsは、GitHubが提供するCI/CDのためのワークフローエンジンです。 ワークフローエンジンは、ビルド、テスト、デプロイといったCI/CD関連のワークフローを実行し、定期実行するワークフローを管理するなど、開発におけるソフトウェア実行の自動化を行います。
Linux、 macOS、 Windowsおよびコンテナに対応しており、プロジェクトを簡単にビルドおよびテストできます。

参考:GitHub Actions - アイデアからリリースまでのワークフローを自動化

SS2LF ・ SiteShield to LinodeFirewall

作成したGitHub Actionsのワークフローはこちらになります。

動作の参考としたい場合には、部分的にコピーもしくは、Forkして利用することができます。

ss2lfはMITライセンスです。著作者はソフトウェアの動作を保証することはなく、結果について責任を一切負いません。

Secretの設定

利用する際には、Actions secretsを設定します。

  • AKAMAI_CREDENTIALS : Akamai CLIに利用するCredentials
  • MAP_ID:対象のSite Shield MapのID
  • LINODE_CLI_TOKEN:Linode CLIに利用するToken
  • FIREWALL_ID:IPを適用するFirewallのID

image.png

AKAMAI_CREDENTIALS

[default]
client_secret = 
host = akab-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.luna.akamaiapis.net
access_token = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
client_token = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

取得方法 : Akamai Control Centerで APIクレデンシャルを作成する

MAP_ID

[7桁の数字]
# Akamai CLIでの確認

akamai site-shield --section default list-maps

LINODE_CLI_TOKEN

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

取得方法 : create-an-api-token

FIREWALL_ID

[5桁の数字]
# Linode CLIでの確認

linode-cli firewalls list

実行時の注意点

ss2lfでは自動的にSite Shieldの適用完了まで行います。
初回にて動作確認等を行いたい場合には、該当の処理を外して実行し、実行結果が問題ないことを確認してから運用に乗せることをお勧めします。

    # 新しいIP Listを使えるようにSite ShieldのAck処理をする
    - name: Update acknowledged
      run: |
        ./akamai site-shield --section default acknowledge --map-id $MAP_ID
      if: steps.ack.outcome == 'failure' && steps.diff.outcome == 'failure'

Actionの実行

実際に利用する際には、定期実行にすることで更新のチェックを自動化することができます。
ss2lfでは手動で実行するようにしています。

# 手動の場合
on:
  workflow_dispatch:

# Cronの場合
on:
  schedule:
    - cron:  '0 * * * *'

参考:Github Actions Schedule

手動にて実行する場合には、Actionsから:Run Workflow:で行います。

image.png

まとめ

GitHub Actionsを利用することで、自前でサーバー等も用意せず簡単に自動化するワークフローを組むことができます。
AkamaiとLinodeではAPIやCLIを提供しており、様々なワークフローに対応した処理を行うことができます。

関連記事

アカマイ・テクノロジーズ合同会社のQiitaではLinode関連など開発者向けの記事を記載しております。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?