WAFとALBリスナールールで「メンテナンス時間帯には開発拠点からのアクセスのみ許可」を実現する

メンテナンス時間帯には一般からのアクセスには503を返しておき開発拠点からのアクセスのみ許可したいことがちょいちょいある。

WAFのルールの付け替えだけでいけるケースも多々あるが、単純なブロックではなく503をちゃんと返したい/メンテナンス画面出したいなど一旦ALBまで届かせたいケースもあるのでそういうときのメモ。

そういうときはまず同じ宛先に対して「サービス用外部ドメイン」と「メンテナンス用外部ドメイン」の2個を用意する。

サービス用外部ドメインは一般ユーザが利用するドメイン。たとえばここでは api.example.net (本番環境にのみ存在)みたいにしておく。

メンテナンス用外部ドメインは開発拠点からのアクセスのみ許可されるドメイン。証明書の量産が嫌なので開発部で一個もしくは環境別に一個ずつ基底ドメインを決めておき、個々のドメインはその基底ドメインの直下の階層に配置されるようにする。たとえばここでは基底ドメインexample.com とした場合、先ほどのサービス用外部ドメインに対応したメンテナンス用外部ドメインapi--example--net.dev.example.com (開発環境)、 api--example--net.prod.example.com (本番環境)みたいにしておく(ここでは元のドメインのドットをハイフン2個にした)。証明書は *.dev.example.com と *.prod.example.com だけ用意しておけばメンテナンス用外部ドメインについては全部まかなえることになる。

ここで、WAFを用意して「HOSTヘッダの末尾が .example.com の場合、開発拠点を示すIPセットのときのみ通過する」というルールを作ってALBに付与しておくことで、まず平時「メンテナンス用外部ドメインでアクセスしてきたときは開発拠点からのアクセスのみALBに辿り着ける。それ以外のドメインでアクセスしてきたときはみんなALBに辿り着ける」となる。

また、ALBには優先度1のリスナールールとして「HOSTヘッダが *.example.com の場合はターゲットグループにフォワードする」、デフォルトルールとして「ターゲットグループにフォワードする」を設定しておく。

このALBのルールは平時は同じ挙動なので意味がないが、メンテナンス時間帯になったら定期実行のLambdaで当該ALBに優先度900のリスナールールとして「無条件にステータス503とメンテナンス時間であることを示す静的コンテンツを返す」を付与すると、最終的に「メンテナンス時間帯に開発拠点からのアクセスは通すがそれ以外のアクセスは遮断」が実現できる。

メンテナンス時間帯が終わったら定期実行のLambdaで優先度900のリスナールールを除去すれば良い。

この設定のポイントは「ALBに辿り着く前のWAFの時点で特定のHOSTヘッダを開発拠点に制限する」「ALBでは特定のHOSTヘッダは常にフォワード、それ以外は条件によってフォワードか503をハンドリング」という2つの大きな機構が連携して機能しているところ。

ただ、API Gatewayで認証認可させるためにVPC Link+プライベートサブネット内NLBで厳密にAPI Gateway以外からのアクセスを弾く機構を入れた場合に併用できないのがつらい。

ECSに繋がるELBに対するアクセスをAPI Gatewayからのみに厳密に制限する

qiita.com

基本的には上記の通り、ECSとELBへのアクセスを厳密にAPI Gatewayからのみに制限したい(ELB直を不可にしたい)場合にPrivate Subnetに置いたNLBとVPC Linkで隠すのがセオリーだけど、「ECSもPrivateに置いてNATと(imageをpullする際の費用低減のための)ECR用のVPCエンドポイント」というのはやらずに「ECSはPublic Subnetに置いてセキュリティグループで同一VPC以外のinboundを遮断して守る」でも良いのではなかろうかという気がしてきたのでメモ。

要はAPI Gatewayからのアクセスはどこから来るのか判別できないのでVPC Linkにお願いするほかないけど、一旦NLBに来たらセキュリティグループの文脈に収まるのでそこそこ自由に構成できるのではなかろうかと。

オンラインのみでの法人の確定申告と納付の概要

2017/07/14になんとなくで設立した会社(参考:設立時の手順メモ)について「個人の確定申告と同じくらいの時期にまとめて確定申告した方が楽そう」「暦の節目と事業年度の節目をあえてずらす意味が分からない」という、やはりなんとなくの理由で事業年度を1/1〜12/31としたため、年が明けてから速やかに決算整理、株主総会、確定申告、納付を実施した。

ちなみに1/4から個人用の確定申告書作成コーナーが使えるので2/15を待たずして個人としての確定申告も提出済。早く提出すると還付の場合は1月中に実施されることもある。

MFクラウド会計を使っているうえに単純な仕訳しかない事業なので決算整理自体はサクッと終わって、申告書の作成も「まあ書式通りに書けばいいんでしょ」「財務諸表とかもPDFに電子署名つけて送れるんでしょ」的なノリでいたところ、これがなかなか強敵であった。

最終的には電子証明書入り個人番号カード/カードリーダーおよびe-Taxソフト、eLTAX(PCdesk)、ネットバンキングで対面や郵送なしに申告と納付ができたが、苦労したところは以下。はじめの2つまでは想定内だったが、別表以下は想定外であった。

  • 納める税金の種類が結構ある。
  • 各税金は国税地方税に分かれ、さらに地方税都道府県と市区町村に分かれ、それぞれ申告/納付先が違う。
  • 申告書に「別表」なるものが膨大にあり、その中から適切な「別表」を選んで記し、適切な資料を添付しなければならない。
  • 別表をまたいだ各項目に相関があるが、e-TaxやeLTAXでは自動で相関を埋めてくれない。
  • 財務諸表はPDF(e-Taxでいうところの「イメージデータ」)での提出は不可。
  • MFクラウド会計では財務諸表を直接電子申告で使える形で出力してくれない。
  • 財務諸表を元に作成した別表で法人税を正しく算出した後でそれを改めて財務諸表に反映し、その財務諸表を元に再度別表を更新する必要がある。
  • 財務諸表以外にも別表5(1)/別表5(2)などは一旦ざっくり書いて別の別表に反映しそこで算出したものを再度持ってきたりして何段階かに分けて記入する必要がある。

ここで世の会計ソフトや会計サービスがあまり申告書の作成には対応していないことを知るなど。
一部対応しているものや専用のソフトもあるはあるもののお金が掛かるし癪に障るので自分でやることにした。
税理士さんが決算のところだけ結構高い金額を設定してるのは決算整理だけじゃなくて申告書作成の分も入れてるからかな。

申告した税金

今回は千代田区にある法人なので以下のようなものを申告した。
なお、本来は消費税も納める必要があるが、免税事業者なので今回は対象外であった。
また、東京23区の法人は地方税について都税事務所にのみ申告/納付すればよいが(市町村民税相当が都民税の税率に加味されている)、それ以外の場合だと市役所に市町村民税の申告が必要。

税金 種別 申告ツール 損金 提出先 自分の提出先 自分の納付先 備考
法人税 国税 e-Tax × 税務署 麹町税務署 麹町税務所
地方法人税 国税 e-Tax × 税務署 麹町税務署 麹町税務所 地方って名前ついてるけど国税
法人事業税 地方税 eLTAX 都道府県税事務所 千代田都税事務所 東京主税局
地方法人特別税 地方税 eLTAX 都道府県税事務所 千代田都税事務所 東京主税局 地方法人税とは違う人
法人県民税(法人税割) 地方税 eLTAX × 都道府県税事務所 千代田都税事務所 東京主税局
法人県民税(均等割) 地方税 eLTAX × 都道府県税事務所 千代田都税事務所 東京主税局

提出した書類

最終的に提出した書類は以下のようなもの。
こちらも本来は消費税関連が入ってくるはずだが免税事業者なので今回は対象外。
別表はほぼ最低限のセットなのでどの法人もこのあたりは書くはず。
勘定科目内訳明細書は自分の法人で扱っている勘定科目を見繕った。こちらも多くの法人で使う品揃えのはず。
法人事業概況説明書は独自の書式などもあるっぽいがe-Taxにあるものを使うのが楽だと思う。「電子計算機の利用状況」の欄に面食らったが文脈的に「会計や在庫管理などにどのソフト使ってる?」の意図と捉えて記入。
財務諸表は本来であればMFクラウドで生成したデータを使いたかったが対応していないっぽいしうちの法人は項目数が少なかったのでPDFを目視しつつe-Taxの「財務諸表(XBRL2.1)」を開いて出てきた書類に転記していった。「XBRL2.1」と書いてあるものの対象形式のファイルがないまっさらな状態からe-Taxで作成可能。複雑な場合は郵送も検討した方がよいが、簡単なら目視転記で頑張れ。
会計上の財務諸表としては「個別注記表」が存在しておりe-Taxでも作成できるが、法人税法施行規則 第三十五条には確定申告で提出するものとして記載されていないというのと、結構目視転記がつらい書式であったので今回は省いた。

書類 省令・規則番号/種類 申告ツール 自分の提出先 備考
各事業年度の所得に係る申告書-普通法人 別表1(1) e-Tax 麹町税務所
各事業年度の所得に係る申告書-普通法人 別表1(1)(次葉) e-Tax 麹町税務所
同族会社等の判定に関する明細書 別表2 e-Tax 麹町税務所
所得の金額の計算に関する明細書(簡易様式) 別表4(簡易様式) e-Tax 麹町税務所
利益積立金額及び資本金等の額の計算に関する明細書 別表5(1) e-Tax 麹町税務所
租税公課の納付状況等に関する明細書 別表5(2) e-Tax 麹町税務所
預貯金等の内訳書 勘定科目内訳明細書 e-Tax 麹町税務所
売掛金(未収入金)の内訳書 勘定科目内訳明細書 e-Tax 麹町税務所
売上高等の事業所別の内訳書 勘定科目内訳明細書 e-Tax 麹町税務所
役員報酬手当等及び人件費の内訳書 勘定科目内訳明細書 e-Tax 麹町税務所
法人事業概況説明書 事業概況説明書 e-Tax 麹町税務所
貸借対照表 財務諸表(XBRL2.1) e-Tax 麹町税務所 決算書を見ながらe-Taxに転記した
損益計算書 財務諸表(XBRL2.1) e-Tax 麹町税務所 決算書を見ながらe-Taxに転記した
株主資本等変動計算書 財務諸表(XBRL2.1) e-Tax 麹町税務所 決算書を見ながらe-Taxに転記した
中間・確定申告書 第6号様式 eLTAX 千代田都税事務所
均等割額の計算に関する明細書 第6号様式別表4の3 eLTAX 千代田都税事務所 初年度で12ヶ月に満たないので均等割を月割にする明細