TORIPIYO DIARY

recent event, IoT, programming, infrastructure topics

SNSとSQSのクロスアカウント設定(KMSで暗号化)

SNSからメッセージをAWSの別アカウントSQSに送ってKMSで暗号化する設定をしたのでやり方を紹介します。

どういうことか分かりやすく図で書くと、以下のようになります。 AWSアカウントA(111111111111)のSNS(simple-sns)から、AWSアカウントB(222222222222)のSQS(simple-sqs)に対してメッセージを送ってKMS(simple-kms)でメッセージを暗号化してSQSで保持するようにします。

f:id:ha107chan:20210409225546p:plain
Account AのSNSからAccount BのSQSにメッセージを送る

手順

アカウントを跨いだクロスアカウントの設定では、権限設定が複雑になり、各リソース(SNS, SQS, KMS)に対してリソースポリシーを設定する必要があります。各リソースに設定するリソースポリシーの説明も手順と合わせて紹介します。

1. SNSトピックを作成 @AWSアカウントA

AWSコンソールからSNSトピックを作成します。

  • 今回は、standardで作成をしました。FIFOでも大丈夫だとは思いますが、検証はしていません。
  • SNS(simple-topic)のリソースポリシーに設定するstatementは以下です。
    • AWSアカウントB(222222222222) から、simple-sns に対する SNS:Subscribe の許可を設定(余談ですが、SNS:Receive は不要かもしれません。コンソールでポリシーを自動作成した時に付与されたのですが、SNSのドキュメントを見ても SNS:Receive の説明はありませんでした。)
{
  "Sid": "__console_sub_0",
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::222222222222:root"
  },
  "Action": [
    "SNS:Subscribe",
    "SNS:Receive"
  ],
  "Resource": "arn:aws:sns:ap-northeast-1:111111111111:simple-sns"
}

2. KMSを作成 @AWSアカウントB

今度は、AWSアカウントBにログインして、SQSでデータ暗号化の時に利用するKMSを作成します。AWS managed keysでも aws/sqs というエイリアス名でSQSのためのKMSがありますがこれは利用しません。なぜなら、AWS managed keysのリソースポリシーは変更することが出来ないので、SNSがKMSを利用できるように設定できないからです。Customer managed keysを使えば、SNSサービスがSQSのデータを暗号化できるポリシーを設定できます。

  • 適当なエイリアス名でCustomer managed keyを作成して、Key policyには以下のstatementを追加しておきます。
    • このstatementによって、SNSはSQSのデータ暗号化(ViaService)をするときに限ってKMSのGenerateDataKey, Decryptアクションを利用できるようになります。
{
    "Sid": "SnsStatement",
    "Effect": "Allow",
    "Principal": {
        "Service": "sns.amazonaws.com"
    },
    "Action": [
        "kms:GenerateDataKey",
        "kms:Decrypt"
    ],
    "Resource": "*",
    "Condition": {
        "StringEquals": {
            "kms:ViaService": "sqs.ap-northeast-1.amazonaws.com"
        }
    }
}

3. SQSキューを作成 @AWSアカウントB

AWSアカウントAからのメッセージを受け取るSQSを、AWSアカウントBのコンソールから作成します。

  • sqsの名前は、simple-sqsとします。
  • タイプはスタンダードです。
  • この作成時には、Access policyはデフォルトのままにして変更はしません。後で設定します。
  • Encryptionでは、先ほど作成した Customer managed key の エイリアスを指定します。

4. SQS側でSNSをサブスクライブするように設定 @AWSアカウントB

AWSアカウントBのコンソールから、SNSをサブスクライブするようにSQSを設定します。

  1. SQSの設定画面から、"SNS subscriptions" をクリック
  2. "Subscribe to Amazon SNS topic" をクリック
  3. AWSアカウントAのSNSリソース(simple-sns)のARNを入力

    f:id:ha107chan:20210409225947p:plain
    Account A(111111111111)のSNSのARNを設定

  4. "Save" をクリック

    • Subscribed successfully to topic arn:aws:sns:ap-northeast-1:111111111111:simple-sns と緑色の背景で表示されれば成功です。
    • SQSのAccess Policyには以下のStatementが追加されます。
      • SQSのAccess Policyが変更されていることからわかるように、コンソールでの作業ではSQSの操作権限が必要になります。権限エラーになった場合はより強いSQSの捜査権限をもつIAMユーザで作業するか、権限を付与してもらってください。
{
  "Sid": "topic-subscription-arn:aws:sns:ap-northeast-1:111111111111:simple-sns",
  "Effect": "Allow",
  "Principal": {
    "AWS": "*"
  },
  "Action": "SQS:SendMessage",
  "Resource": "arn:aws:sqs:ap-northeast-1:222222222222:simple-sqs",
  "Condition": {
    "ArnLike": {
      "aws:SourceArn": "arn:aws:sns:ap-northeast-1:111111111111:simple-sns"
    }
  }
}

5. SNSからメッセージの送信テスト @AWSアカウントA

  • SNSから適当にテストメッセージを作成して送信します。

f:id:ha107chan:20210409230359p:plain
メッセージの送信

6. SQSからメッセージの受信確認 @AWSアカウントB

  • SQSからPoll for messagesを実行してアカウントAのSNSからメッセージが届いていることを確認します。

f:id:ha107chan:20210409230431p:plain
メッセージの受信


正直、各サービスのリソースポリシーにはどんな権限を付与すれば良いのか混乱すると思います。落ち着いてポリシーをよく見ながら設定してみてください。

参考

地震に備える(地震保険編)

今まであまり地震対策をしていなかったのですが、この前の関東の地震を経験してやっぱりちゃんと対策をとるにこしたことはないと思うようになりました。

Youtubeなどで南海トラフで検索すると以下のように地震動画が出てきます。この動画を見ると、本格的な南海トラフ地震が起きなくても、場合によっては避難所に住まないと行けなくなることがわかります。

www.youtube.com

これから数回に分けて、地震に備えて出来る対策を書いてみようと思います。

地震保険

賃貸用の地震保険には入っていたのですが、内容をよく把握しないで契約をしていたのでこれ機に内容を確認しました。

地震保険は、火災保険に付帯する方式の契約となるので、火災保険とセットでの加入が必要です。地震保険自体の保険料はどこの保険会社でも変わらないようになっているのだそうですが、火災保険の部分で各保険会社の保証内容は異なるので保険の費用も変わってきます。 地震保険の対象は居住用の建物と家財ですが、建物の損傷は基本的に大家負担なので、マンションやアパートを賃貸で借りている場合は家財のみが対象となります。

地震保険は、火災保険と異なって全損しても必ずしも全損した時価額全てが保険金額としておりるわけではありません。例えば、保険金額が1000万円の地震保険を契約していて、2000万円の家が津波で流され全損と認められても、保険金額の100%の1000万円までしか出ません。地震保険に入っている人は、保険金額はいくらに設定されているのかその金額をちゃんと確認するようにしましょう。

地震保険の保険金の支払額は、損害の大きさによって全損・大半損・小半損・一部損に分類されます。分類によって、支払われる保険金額の割合は変わります。

平成29年以降保険始期 基準
全損 地震保険の保険金額の100%
時価額が限度)
大半損 地震保険の保険金額の60%
時価額の60%が限度)
小半損 地震保険の保険金額の30%
時価額の30%が限度)
一部損 地震保険の保険金額の5%
時価額の5%が限度)

全損・大半損・小半損・一部損の分類方法には基準があります。以下は、家財の場合の分類基準です。

平成29年以降保険始期 基準
全損 地震等により損害を受け、損害額が保険の対象である家財全体の時価額の80%以上となった場合
大半損 地震等により損害を受け、損害額が保険の対象である家財全体の時価額の60%以上80%未満となった場合
小半損 地震等により損害を受け、損害額が保険の対象である家財全体の時価額の30%以上60%未満となった場合
一部損 地震等により損害を受け、損害額が保険の対象である家財全体の時価額の10%以上30%未満となった場合

この時価額の被害にあった割合をどうやって計算するのかというと、「食器類」「電気器具類」「家具類」「身のまわり品その他」「寝具・衣類類」の5つに分類して算定する会社が多いそうです。 例えば、地震によってテレビが壊れたとします。この時の家財全体に占める損害の割合は、100万円で購入した高級テレビであっても、1万円で購入した格安テレビであっても一律に同じ割合で計算されます。つまり、テレビが壊れたら2.5%、椅子が壊れたら4%、と品目ごとに割合が決まっていて、その割合の合計で損害の大きさが全損・大半損・小半損・一部損のどれに分類されるのか決まるのだそうです。もし、地震でテレビだけしか壊れなかったら、家財全体の時価額の10%以上とはならないで、地震保険に入っていても保険金は支払われない可能性が高いです。

地震保険の保険金額をどれだけに設定しておけば良いかですが、各保険会社で家族構成や年齢によって家財を再調達する場合にどれぐらいの費用がかかるかの目安を作成しています。これを参考に、どれぐらいの保険金額を設定するか決めることになります。

www.peace-net.jp

地震は発生すると被害は甚大となるため、1回の地震等による保険金の総支払限度額は11.7兆円と決まっているそうです。

www.mof.go.jp

そのため、超巨大地震が発生したら11.7兆円を超えた被害になるので実際に支払われる保険金額はより少なくなるのではという意見もあります。とはいえ、阪神・淡路大震災東日本大震災などの巨大地震が発生した際でもこの金額内でカバーできていたそうで、11.7兆円を超えても何らかの処置を検討してくれるようなので、安心(気休め?)を得るために払うのは悪くないとは思います。自分の場合は安心を得るのにそんな極端に高い額ではないので加入しておこうと思います。

マイナンバーカードの証明書とは

今年は初めてオンラインで確定申告を申請しました(還付申請なら1月1日から申請できます)。カードリーダーにマイナンバーをかざして、確定申告申請のサイトにログインして、オンライン上での記載が終わったら、最後にマイナンバーカードをリーダーにかざして、パスワードを入力してデータを送信することで提出となります。マイナンバーには内部に電子証明書が含まれています。

マイナンバーに含まれる証明書には2種類あります。

これらの証明書は、どちらも地方公共団体情報システム機構(J-LIS)という機関が認証局として発行しているようです。証明書の有効期間はマイナンバーカードが発行されてから5回目の誕生日までとなっています。マイナンバーにはこれら2種類の証明書の公開鍵に対応する、秘密鍵も格納されており、秘密鍵を無理矢理読み取ろうとすると、耐タンパー性により自動的に内容は消去されます。秘密鍵と公開鍵は各地方公共団体で発行されているそうです。

ちなみに、マイナンバーカードの公開鍵を利用してSSHしている強者がいました。

www.osstech.co.jp

利用者証明用電子証明書

利用者証明用電子証明書は、マイナポータルのサイトにログインする際に、カードを所有する利用者本人であることを証明するために利用します。現状だと、ユーザ名とパスワードを入力して本人かどうか判断するサイトが大半ですが、マイナンバーカードを利用した認証方式ではカードを所有していることと、簡単なパスワードの確認で本人かどうかの確認を行っています。

利用者証明用電子証明書に含まれる情報は以下です。氏名・生年月日・性別・住所の情報は含まれません。

  • 発行番号
  • 発行年月日
  • 有効期間
  • 発行者

利用者証明用電子証明書を利用した本人確認の流れは以下の通りです。

  1. マイナポータルなどのサイトで乱数を生成する
  2. 乱数を通信相手のマイナンバーカード所有者に送信する
  3. 乱数を受け取った所有者はマイナンバーカードに格納している秘密鍵でサイトから送られてきた乱数を暗号化する
  4. 乱数本体 + 暗号化された乱数 + 公開鍵情報を含む利用者証明用電子証明書、を所有者からサイトに送信する
  5. サイト側では電子証明書にある公開鍵を利用して暗号化された乱数を復元する
  6. 乱数本体と複合化された乱数を比較して値が一致していることを確認
  7. 認証局地方公共団体情報システム機構(J-LIS))に電子証明書の有効性を照会する
  8. 電子証明書の有効性を確認できたら認証完了

f:id:ha107chan:20210217224336p:plain
利用者証明用電子証明書フロー

本当は、7, 8で認証局には問い合わせないで、認証局によって署名されているかを手元にある認証局の証明書で送られてきたユーザの証明書を検証して終わるのではないかと思うのですが、資料には上記のフローが記載されていました。

なぜ、サイト側で乱数を生成するのかというと、通信相手がマイナンバーカードを所有しているかどうか確認するためです。他人の電子証明書で別人になりすまそうとする人がいても、秘密鍵を利用できるマイナンバーカードが手元にないので、乱数を暗号化することができず、復号化したときに乱数本体の値と一致するような暗号化された乱数を生成できないので乱数の突合でエラーとなります。もし、乱数を生成せずに、純粋にマイナンバーの利用者証明用電子証明書のみで本人確認を行っていたらなりすましは簡単に発生するでしょう。

署名用電子証明書

署名用電子証明書は、文書データが改竄されておらず、マイナンバーの所有者本人によって作成されたことを証明したいときに利用します。例えば、住宅ローン契約の書類を物理的に作成するときは、契約書類には契約者本人の名前を署名すると思います。必要な場合は住所や生年月日も書類に記載します。これと同じことを、署名用電子証明書を使って物理的な紙ではなくて電子データに対して行います。

署名用電子証明書で署名された電子データには、署名者の氏名・生年月日・性別・住所の情報が含まれるようになります。これは、署名者が誰であるか確認できるようにするためです。署名されたデータをむやみにインターネットなどに公開すると個人情報の流出に繋がるので気をつけましょう。

署名用電子証明書には以下のデータが含まれます。

  • 氏名
  • 生年月日
  • 性別
  • 住所
  • 発行番号
  • 発行年月日
  • 有効期間
  • 発行者

名証電子証明書を利用した電子データへの署名の流れは以下の通りです。

  1. マイナンバーカードに格納されている秘密鍵で送信する文書データを暗号化
  2. 文書データ本体と暗号化された文書データ本体と公開鍵のある署名用電子証明書を送信
  3. 送信された公開鍵を利用して暗号化された文書を復号化
  4. 文書データ本体と復号化した文書データを比較して一致することを確認
  5. 送信された電子証明書は有効なものかどうか認証局地方公共団体情報システム機構(J-LIS))に電子証明書の有効性を照会
  6. 有効であれば送信されてきた文書データの有効性の確認完了

f:id:ha107chan:20210217224416p:plain
署名用電子証明書フロー

文書データをマイナンバーカードに格納されている秘密鍵で暗号化することで、送信されてきた文書データがマイナンバーカードを持つ本人によって送信されたものかどうかを確認しています。マイナンバーを持たなければ、秘密鍵を利用できないので証明書の公開鍵によって、復号できるような暗号化された文書データを作成できません。


まとめ

マイナンバーカードには、署名用電子証明書と利用者証明用電子証明書、それら証明書の公開鍵に対応する秘密鍵が格納されています。格納されている秘密鍵を利用しないと、認証や文書データの送信はできないのでマイナンバーカードをしっかりと本人が保管できていれば安全と言えます。しかし逆に言うと、マイナンバーカードと署名用電子証明書・利用者証明用電子証明書の暗証番号が記載された紙を一緒に持ち歩いていて、まとめて盗まれてしまうとシステム上はそのマイナンバーカードを紛失した本人に完全に成り代わって証券口座の開設や不動産取引を行うことが出来るわけです。(不動産取引だと、流石に契約前に実際に会って本人確認をとるのではないかと思いますが。)

もし、マイナンバーカードを登録した暗証番号と一緒に持ち歩いている人がいたら、盗難などされると大変危険なので暗証番号の紙と一緒に持ち歩くことはしないようにしましょう。

参考

マイナンバーと公的個人認証制度の概要について

"復旧サーバ上のインストーラ情報が壊れています。"というメッセージがmacOSの再インストールで出た時の対応方法

f:id:ha107chan:20210211161243j:plain
復旧サーバ上のインストーラ情報が壊れています。

Macを下取りに出すのでこちらの手順にしたがってMacの初期化を進めていました。

support.apple.com

"7. ハードドライブを消去してmacOSを再インストールする"というところで、

support.apple.com

を実施してディスクを消去。その後に、

support.apple.com

の手順に沿ってmacOSを再インストールしようとするものの、"復旧サーバ上のインストーラ情報が壊れています。"というメッセージ(英語だと、The Installer information on the recovery server is damaged)が表示されてインストール出来ない...。

どうやら、画像を見た感じではSierraをインストールしようとしているようです。古いOSをインストールしようとしているのが原因かもしれません。2017年のモデルのMacなので、律儀に古いOSをインストールしようとしているのかな?

↑のページの下の方を見ると、"Intel 搭載の Mac では、「option + command + R」キーを起動時に使い、お使いの Mac と互換性があるうちでいちばん新しい macOS にアップグレードできます。"という記載があります。

試しに、「command + R」ではなくて、「option + command + R」キーを押しながら起動してみると、今度はBig Surでインストールをするようになって無事にOSを再インストールできるようになりました。

人によって状況は異なるので必ずしもこの方法でうまくいくわけではないと思いますが、自分の場合は今回はこれでインストールできるようになりました。

1時間ほどの作業で毎月5000円を稼ぐ

コロナが流行るようになってから部屋をよく整理しています。いらない本や電子機器をメルカリで売ったり、利用していないサブスクリプションサービスを解約したり、家電を買い換えたり、電気や携帯・インターネットサービスプロバイダを見直したりしています。

こんなことをやっていたら、1ヶ月に1回ぐらいなら1時間ほどの作業で5000円ほどを稼ぐ(もしくは節約する)方法はたくさんあると気づきました。コンビニなどのアルバイトなら、5000円を稼ぐのに4~5時間ぐらい働かないといけないぐらいのお金です。月に5万~10万を給与にプラスして稼ぎたいのであればバイトや副業をやらないといけないと思いますが、ひと月の給与にプラスして、5000円から10000円を稼げれば良いのであれば、アルバイトは不要です。

ひと月に5000円、年間で60000円の収入を得ることができれば、1~2回ぐらい旅行に行けたり、賃貸マンションなら少しグレードを上げた部屋に住むことも出来ます。投資の配当などで60000円を得るとしたら、利回り2%の金融商品で配当の20%を税金と考慮すると60000 / (0.02 x 0.8) = 375万円の資金が必要となります。

やり方

ひと月に5000円ぐらいを稼ぐ(節約する)方法を列挙すると、以下の方法があります。

  1. キャッシュレス決済のキャンペーンに申し込む
  2. クレジットカードのキャンペーンに申し込む
  3. 家にある不用品をフリマで売る
  4. 金融サービスのキャンペーンに申し込む
  5. 電気や通信サービスのキャンペーンに申し込む
  6. ふるさと納税を利用する

キャッシュレス決済のキャンペーンに申し込む

もう十分に周知されているとは思いますが、○○payを利用すると○○%をキャッシュバックするというキャンペーンがいろんな事業者で行われています。例えば、d払いではお買い物をすれば、そのうちの30%を還元するキャンペーンをやっているときがあります。普段使っているスーパーがこのキャンペーンの対象となっていれば、支払った額のうちの2000円分まで節約できます。これだけでは5000円には届きませんが、他の同様なキャンペーンと合わせれば5000円分のポイントを稼ぐ(もしくは節約する)のは可能です。

service.smt.docomo.ne.jp

クレジットカードのキャンペーンに申し込む

楽天カードがお得なカードとして有名ですが、他にもお得なものはたくさんあります。例えば、三井住友カードでは利用金額の20%までを還元するキャンペーンを実施しています(以前は、12000円分を還元していた)。クレジットカードを使った決済はほとんどどこでも出来るので、三井住友カードを作成することで40000円までの消費はなんでも20%割引出来るチケットを手に入れたことになります。カードの申し込み自体はパソコンの入力に慣れている人なら1時間以内で終わると思うので、1時間以下の作業で8000円を節約できるようになると言って良いと思います。こんな還元キャンペーンが、様々なクレジットカード会社で常時もしくは定期的に開催されているので、それを利用すれば時給3000円~10000円ぐらいの還元を受けることができます。

www.smbc-card.com

家にある不用品をメルカリで売る

メルカリなどのフリマアプリを利用するのも、時給で換算すれば5000円以上を得ることができる場合もあります。もう利用していないiPhoneなどあれば、出品してみましょう。Appleの製品は時間が経っても他の製品と比べれば価値の損失幅が小さく、思ったよりも高値で販売することができます。説明書や箱など無くても売れるので、どれぐらいの相場で売れているのか見てみましょう。配送には梱包材が必要となるので、買い物したときについてきた梱包材は一定程度取っておくことをおすすめします。たとえメルカリに売るものがなくても、家にある不用品を整理することで、放置していた服や靴が見つかって節約できることもあるので、家の不用品整理はおすすめです。

金融サービスのキャンペーンに申し込む

最近はフィンテックの盛り上がりもあって、様々な会社が新しいサービスをスタートさせています。新しいサービスを始めるときはユーザを集めないといけないのでお得なキャンペーンがよく開催されています。例えば、Line証券は証券口座を開いて簡単なクイズに全問正解すれば4000円分の株を無料でプレゼントするというキャンペーンを実施しています。

line-sec.co.jp

証券口座の開設作業は1時間以内には済むと思うので、これを利用すれば時給4000円ぐらいの利益を得ることが出来ます。クレジットカードと似たような仕組みなのですが、みずほ銀行も1年ほど前はみずほWalletというサービスで50000円までの利用で20%の還元キャンペーンを実施していました。

prtimes.jp

Line FXでは、10000通貨の取引をすると5000円プレゼントのキャンペーンも行っています。ロスカットしないぐらいの十分なお金を注げる人であれば、比較的小さなリスクで5000円を取得出来ます。

contents.line-fx.com

電気や通信サービスのキャンペーンに申し込む

通信や電気などのサービスでもユーザを集めるためにキャンペーンを開催しているところは多いです。例えば、楽天モバイルは通信料金1年間無料のキャンペーンを実施しているので、1~2時間ほどの作業で1年間携帯料金を無料で利用できます。1ヶ月で3000円ほどの通信料金のかかっていた人なら、1~2時間ほどの作業で36000円分を節約できます。 電力も自由化となり、様々な業種の会社がこの業界に参入をしています。当然ユーザを集めるためにキャンペーンを実施しており、定期的に乗り換えるとお得な仕組みとなっています。例えば、ソフトバンクのおうち電気では2ヶ月間の電気料金の無料キャンペーンを実施しています。ひと月で3000円ぐらいを電気代に払っていれば、5000円分ぐらいを節約出来ます。

www.softbank.jp

ふるさと納税を利用する

ふるさと納税も節約にはおすすめの方法です。ふるさと納税で返礼品は受け取れてもお金を稼ぐことは出来ないと思っている人もいるかもしれませんが、ポイントを得ることのできるサービスでは実質的に利益を得られます。例えば、楽天のサービスをいろいろ利用している人であれば、楽天ふるさと納税で納付した金額の10%ほどをポイントとして得ることが出来ます。6万円をふるさと納税して、そのうちの10%をポイントとして還元出来れば、返礼品をもらいながら6000ポイント分を取得することが出来ます。

キャンペーンを管理する

ポイントや現金のキャッシュバックを受けるキャンペーンをたくさん申し込んでいると、何を申し込んでいるのかだんだんわからなくなってきます。 そこで、以下の2つのツールで管理するのがおすすめです。

  • spreadsheet

www.google.com

  • todoist

todoist.com

どちらも、基本無料で利用できます。

spreadsheet

応募してみたいキャンペーンが見つかったら、以下のようにspreadsheetの表に書き出しておきましょう。

f:id:ha107chan:20210114214848p:plain
スプレッドシート

各行にはそれぞれのキャンペーン、各列にはキャンペーンを応募するにあたって確認しておきたい情報を記載して、どんなキャンペーンなのか把握できるようにしておきます。 確認しておきたい情報を列として項目化することで、何の情報がまだ確認必要なのかわかるようになります。(例:このキャンペーンのポイント還元はいつされるのか、ポイントの有効期限はどれぐらいなのかなど)

記載しておくと良い項目

  • キャンペーンタイトル:キャンペーンのタイトル
  • 還元額:どれぐらいの額の還元を受けられるのか記載。各キャンペーンの還元合計額を見ることで、年間でトータルどれぐらい還元を受けることが出来たのかわかるようになる
  • 提供者:どこの事業者が提供しているキャンペーンか記録
  • 応募状況:忘れたときにあとから確認できるように応募状況を記載
  • 受給状況:もう還元を受けたのか確認できるように記載
  • 解約状況:サブスクを始めないと受けられないキャンペーンもあるので、特典を受けた後に解約したかどうか確認できるように記載
  • 条件:還元を受ける条件を記載
  • 申込時期:キャンペーンを申し込んだ時期を記載
  • 還元時期:還元をいつ受けることができるのか記載。申し込んでから実際にポイントを受けることが出来るのは3~4ヶ月先ということはよくある。
  • ポイント有効期間:還元されたポイントはどれぐらいの期間有効なのか記載。どのポイントから利用していくか計画を立てるのに参考になる。
  • キャンペーンURL:キャンペーンの詳細を確認したいときに、キャンペーンページにアクセスできるように記載。
  • 後でやること:キャンペーンに申し込んだ後にやらないといけないことを記載。(サービスの解約、数ヶ月後に送られてくるメールのリンク先のサイトに登録など)

spreadsheetに記入しておくことで、キャンペーンをたくさん申し込んでも混乱せずに対応できるようになります。

todoist

todoistは、いつどんなタスクをするのか管理するためのアプリです。iPhoneのリマインダーと似たようなアプリです。iPhoneのリマインダーでも代替できるのかもしれませんが、僕はtodoistのインターフェースの方がしっくりくるのでtodoistを使い続けています。

f:id:ha107chan:20210114214307p:plain
todoistの画面

例えば、リボ払い設定を3ヶ月継続すると5000円分のポイントをもらえるキャンペーンに申し込んだとします。todoistを利用すると、3ヶ月後の日付にリボ払い設定を解除するというタスクを追加することが出来ます。 これだけでは普通のカレンダーを使って3ヶ月後の日にちに記載しておけば良いと思うかもしれませんが、todoistの場合はタスクを完了できなかったときは期限切れのタスクというステータスとなって、継続して表示されるようになります。 そのため、その日にタスクを実行できなくてもあとからタスクを忘れずに済ませるようになります。


以上、この2つのツールを使えば、キャンペーン内容を忘れたり、やることを忘れるリスクをかなり下げることが出来ます。サービスの解約はよく忘れることなので、todoistなどのタスク管理アプリは必須です。

ここまで上げた6つのやり方は、大学生以上であればほぼ誰でもできるものですが(ふるさと納税は働いて住民税を納めていないと難しいので除く)、以下の点が高い人ほど取り組みやすくなります。

  • 社会的信用
  • 資産・収入
  • IT・金融の知識

クレジットカードを申し込んで審査を通過するには社会的信用が必要です。ふるさと納税にたくさん申し込んだり、FX取引でロスカットにならないぐらいの資金を注ぐためには資産・収入が必要です。クレジットカードのキャンペーンに時間をかけずに申し込んだり、キャッシュレス決済のキャンペーン内容をすぐ理解するにはIT・金融の知識が必要です。逆にこれらが低いと、ここまで上げてきたようなひと月5000円ほどを稼ぐ方法に取り組みにくくなります。つまり、一般的には高属性と見られるような人の方がより簡単にお金を稼げる(節約できる)ことになります。

ひと月に5000円ぐらいを稼ぐ(節約する)方法を紹介しました。一応注意点として、あまりハマりすぎると2時間で1000円などコストパフォーマンスの悪い方法にまで手を伸ばしてしまうので、効率の良さそうなものだけに留めるようにしておきましょう。

個人年金の利回りと税金の関係(所得税の税率ごとの利回りを比較)

個人年金保険とは

個人年金とはどういうものかをざっくり説明すると、毎月一定額を支払い続けると、20~30年後に契約で定められた一定額を、一括もしくは複数年に分けて受け取れる保険です。支払った額と同じ額しか受け取れないのでは意味がないので、支払った額よりも少し多めに受け取ることができるという契約内容になっています。

IRR(内部収益率)

契約している個人年金保険をこのまま契約し続けるべきか、それとも解約して他の資産に投資するべきか、この判断をするのに使えるツールとしてIRR(内部収益率)があります。以下の動画が、IRRについてわかりやすく説明をしています。


第122回 もうだまされない!個人年金保険の節税効果を考慮した「正しい保険の見極め方」【お金の勉強 初級編】

生命保険料控除

個人年金を利用すると、生命保険料控除を受けることができます。生命保険料控除には新契約の方式と旧契約の方式があり、平成24年1月1日以降契約の個人年金保険には新契約方式の生命保険料控除が適用されます。新契約方式の生命保険料控除額は以下の表のようになります。

所得税

年間の支払保険料等 控除額
20,000円以下 支払保険料等の全額
20,000円超 40,000円以下 支払保険料等×1/2+10,000円
40,000円超 80,000円以下 支払保険料等×1/4+20,000円
80,000円超 一律40,000円

住民税(川崎市の場合)

年間の支払保険料等 控除額
12,000円以下 支払保険料等の全額
12,000円超 32,000円以下 支払保険料等×1/2+6,000円
32,000円超 56,000円以下 支払保険料等×1/4+14,000円
56,000円超 一律28,000円

控除を適用できるので、所得税や住民税を安くできます。例えば、年間の支払い保険料が30000円で所得税の税率が20%の人の場合は、所得税(30000円x1/2+10000円) x 20% = 5000円、住民税は(30000円×1/2+6,000円) x 10% = 2100円だけ安くなります。税率の高い人ほど所得税の割引額は大きくなります。

個人年金保険(たのしみワンダフル)の例

先ほどIRRの説明で紹介したyoutubeの動画では、IRRは0.47%のため投資するには微妙という結論となっています。試しに、住友生命のたのしみワンダフルという個人年金保険ではどうなるのか調べてみました。

www.sumitomolife.co.jp

契約年齢 月払保険料 払込保険料総額 年金原資 一括受取率 基本年金額 年金受取総額 年金受取率
30歳 1.5万円 540万円 約563万円 約104.3% 57.41万円 574.1万円 約106.3%

30歳から加入、60歳まで毎月15000円(全期間で540万円)を支払って、563万円を一括で受け取るか、574.1万円を10年間かけて受け取るか、のどちらかを選ぶという個人年金保険です。

一括受け取りの利回り

個人年金を一括で受け取った時の所得は、一時所得として扱われます。

www.nta.go.jp

一時所得 =(総収入金額-必要経費-特別控除額50万円)/ 2 = (563万円 - 540万円 - 50万円) / 2 = -13.5万円

となり、一時所得はマイナスとなります。そのため、一括で受け取ったときには一時所得に税金はかかりません。

この商品の場合、年金を一括で受け取るとIRRは以下のようになります。(IRRは、年間の支払いで計算しているので、月毎の支払いと比較して若干異なりますが、大枠ではそこまで変わらないと思います。)

所得税の税率 生命保険料控除前 10% 20% 23%
年間の所得税の割引額 - 4000 8000 9200
年間の住民税の割引額 - 2800 2800 2800
保険料支払合計額(生命保険料控除含む) 5400000 5196000 5076000 5040000
一括受取額 5630000 5630000 5630000 5630000
IRR 0.268% 0.513% 0.660% 0.705%

所得税の税率が20%以上の人ならIRRは0.660%以上となるので、0.660%という利回りに魅力を感じれば投資しても良いかもしれません。少なくとも、銀行の普通預金に比べれば利回りは良いのではないかと思います。資金は拘束を受けることになりますが。

年金受け取りの利回り

個人年金を年金形式で受け取った時の所得は、雑所得として扱われます。

www.nta.go.jp

雑所得 = 総収入金額 - 必要経費 = 57.41万円(基本年金額) - 540万円(払込保険料総額) / 10 = 3.41万円

となり、所得税と住民税が発生します。個人年金を受け取っている間の所得税の税率を10%に仮定するとIRRは以下のようになります。(IRRは、年間の支払いで計算しているので、月毎の支払いと比較して若干異なりますが、大枠ではそこまで変わらないと思います。)

所得税の税率 生命保険料控除前 10% 20% 23%
年間の所得税の割引額 - 4000 8000 9200
年間の住民税の割引額 - 2800 2800 2800
保険料支払合計額(生命保険料控除による還付込み) 5400000 5196000 5076000 5040000
1年間の年金額 574100 574100 574100 574100
IRR 0.305% 0.437% 0.552% 0.587%

一括受取の場合と比べると、IRRは低下しています。より高い利回りで運用できる自信があるのであれば、年金を一括で受け取って運用したほうが良いでしょう。(そもそも、そんな自信のある人は最初から個人年金に加入しないのかもしれませんが。)

まとめ

個人年金を利用するのであれば、

  1. 生命保険料控除枠のギリギリを使い切るまでの金額で年間の保険料を払うようにする。
  2. 所得税の税率・年間支払い保険料によってIRRの値は大きく変わる。所得の高い人ほど所得税の減税効果が大きくなるので有利。

以上の2点を意識しながら、検討されたほうが良いのではないかと思います。

ちなみに、僕の入っている個人年金は、旧契約の生命保険料控除を受けるもので、年間の支払い保険料は15万円よりも少ないので、一括で受け取る場合のIRRは大体1.5%ぐらいとなります。昔はもっと利回りの良い個人年金保険が販売されていたそうですが、低金利・新契約の時代となってIRR値は大分下がっているようです。

参考リンク

住民税の計算方法(サラリーマン向け)

今回は住民税の計算方法を記載したいと思います。

住民税

住民税は、都道府県や市区町村に収める税金です。所得税国税なので国税庁のページにその計算方法の説明がありますが、住民税の場合は各自治体に納付するため、計算方法の説明は各自治体のホームページにあります。自分の住んでいる自治体の住民税について、その計算方法を正しく知りたい場合は、住んでいる自治体のホームページを参照ください。住民税は自治体によって微妙に税率など異なる場合があり、自分の正確な住民税を知るためには、各自治体の出す情報が最も確実な情報源となります。

住民税の計算式は以下の通りです。所得割額と均等割額を合計したものが住民税となります。どちらの比率が大きいかというと、所得割額の方が住民税に占める割合は大きいです。

住民税 = 所得割額 + 均等割額

  • 所得割額
    • 所得によって納税額が変わる
  • 均等割額
    • 所得によって納税額が変わらない(生活保護の適用や一定以下の低所得の場合を除く)

以下では、所得割額と均等割額の計算方法を、川崎市を例としながら説明します。

所得割額

所得割額は以下の式で1~4の順に計算します。所得税の計算と計算方法は似ていますが、最後に調整控除という項目があります。

1. 給与所得 = 給与の収入金額 - 給与所得控除
2. 課税所得 = 給与所得 - 各種所得控除
3. 所得割 = 課税所得 x  税率(10%)
4. 所得割額 = 所得割 - 調整控除

この計算式のポイント

  • 住民税の各種所得控除の額は、同じ項目でも所得税よりも小さくなります。例えば、所得税配偶者控除は38万円ですが、住民税の配偶者控除は33万円となり、控除額は5万円少なくなります。
  • 課税所得にかかる税率はほとんどの自治体で10%です(川崎市の場合は、市民税8%, 県民税2.025%の合計10.025%です。理由は、神奈川県は他の県と比べて税率が0.025%高いためです)。所得税の場合は課税所得に応じて税率は変化(5% ~ 40%の範囲)します。
  • 所得税には存在しない調整控除という概念が登場します。調整控除については、あとで説明します。

給与所得控除

給与所得控除は、川崎市の場合は以下の通りとなります。これは、令和元年の住民税(納税は令和2年6月~令和3年5月の期間で実施)の表で、令和2年以降の住民税(納税は令和3年6月~令和4年5月の期間で実施)を計算する際には、この表を利用することはできません。なぜなら、令和2年以降は、年収850万円以上の給与所得控除額が減額されるからです。

令和元年の住民税の給与所得計算表

給与収入金額 給与所得金額
1円~ 650,999円 0円
651,000円~1,618,999円 給与収入金額-650,000円(給与所得控除額)
1,619,000円~1,619,999円 969,000円
1,620,000円~1,621,999円 970,000円
1,622,000円~1,623,999円 972,000円
1,624,000円~1,627,999円 974,000円
*1,628,000円~1,799,999円 給与収入金額×60%
*1,800,000円~3,599,999円 給与収入金額×70%- 180,000円
*3,600,000円~6,599,999円 給与収入金額×80%- 540,000円
6,600,000円~9,999,999円 給与収入金額×90%-1,200,000円
10,000,000円以上 給与収入金額-2,200,000円

各種所得控除

所得税と同様に、各納税者の実情に応じた税負担をするために、社会保険料控除・生命保険料控除・配偶者控除など、各種所得控除額が給与所得額から差し引かれます。所得税と同じ項目(例:配偶者控除)でも、住民税の場合は控除額の減る場合があります。(例:川崎市の各種所得控除

税率

課税所得に対して一定の税率をかけたものが所得割です。税率は10%の自治体が多いですが、一部の自治体(神奈川県は税率10.025%, 豊岡市は税率10.1%など)では、税率が少し高くなることもあります。

調整控除

調整控除の計算方法は少し複雑です。プログラミングのように記述すると以下の式となります。(min, maxは、与えられた引数のうち最小、最大の値を返す意味です)。課税所得の総額が200万円を越えるほとんどの人は、 H - T + 200万円 が5万円以下となるそうで、調整控除は 5万円 x 0.05 = 2500円 となります。

T: 課税所得の総額
H: 所得税と住民税の人的控除の差額の総額
if T <= 200万円
  調整控除 = min([T, H]) x 0.05
else if T > 200万円
  調整控除 = max([(H - T + 200万円), 5万円]) x 0.05
end

均等割額

均等割額は、一定の条件の下で免除されている人を除けば、所得に関係なく一定額を納税します。年収400万円の人も、年収1000万円の人も、同じ自治体に住んでいれば同じ均等割額を納めることになります。均等割額は自治体ごとに異なる場合もあります。横浜市は、所得割額の税率と均等割額のどちらも、他の自治体よりも高いです。

  • 東京都千代田区 5000円(都民税1000円, 区民3000円, 復興特別税1000円)
  • 埼玉県さいたま市 5000円(県民税1000円, 市民税3000円, 復興特別税1000円)
  • 神奈川県川崎市 5300円(県民税1000円, 水源環境保全・再生のための上乗せ分300円, 市民税3000円, 復興特別税1000円)
  • 神奈川県横浜市 6200円(県民税1000円, 水源環境保全・再生のための上乗せ分300円, 市民税3000円, 復興特別税1000円, 横浜みどり税900円)

復興特別税の1000円は、東日本大震災からの復興目的に設けられた税金ですが、令和6年以降は森林環境税と名称が変わり恒久的に徴収するそうです。

川崎市の場合

実際の具体例を通して、住民税を計算してみます。この例は、川崎市のホームページに掲載されていたものです。

前提条件

  • 家族構成
    • 夫婦と子供2人(妻子は所得なし、夫婦共に43歳、子は17歳と11歳)
  • 前年中の収入
    • 給与収入金額 7,633,000円
  • 前年中の社会保険料支払額 770,500円
  • 前年中の生命保険料支払額 300,000円(新契約の一般生命保険、個人年金、介護医療保険ともに各100,000円)

住民税の計算

所得割額

  • 所得金額

    • 給与所得金額: 7,633,000円(収入金額)-1,963,300円(必要経費)=5,669,700円
  • 所得控除額(合計: 1,830,500円)

  • 課税所得金額: 5,669,700円 - 1,830,500円 = 3,839,200円 => 3,839,000円 (1,000円未満切捨て)

  • 所得割

    • 市民税: 3,839,000円 x 8% = 307,120円
    • 県民税: 3,839,000円 x 2.025% = 77,739円
  • 所得控除

    • 課税所得は3,839,000円で200万円を越えて、人的控除額の差の合計は150,000円なので、調整控除は以下のように計算される
    • 調整控除: max(150,000円-(3,839,000円-2,000,000円)=-1,689,000円, 50,000円) = 50,000円
      • 市民税: 50,000円 x 4% = 2,000円
      • 県民税: 50,000円 x 1% = 500円
  • 調整控除後の所得割額

    • 市民税: 307,120円 - 2,000円 = 305,120円 => 305,100円 (100円未満切捨て)
    • 県民税: 77,739円 - 500円 = 77,200円

均等割額

  • 市民税: 3,500円
  • 県民税: 1,800円

住民税

  • 住民税: 市民税 + 県民税 = (305,100円 + 3,500円) + (77,200円 + 1,800円) = 308,600円 + 79,000円 = 387,600円

計算すると、市民税の方が県民税よりも納税額の大きいことがわかります。一般的に、住民税は課税所得のおおよそ10%と言われていますが、この例では、(387,600円 / 3,839,000円) = 10.096% となり、確かにおおよそ10%の範囲に収まっていることがわかります。個別のケースにより、10%からのズレは変化すると思いますが、素早く概算したいときには使えるテクニックだと思います。住民税の課税所得に対する税率は10%で一定なので、各種控除によってどれぐらい節税出来たのかという計算は所得税よりも簡単です。例えば、一般生命保険で2.8万円控除を受けた場合は、2.8万円 x 10% = 2800円の住民税を節税できることになります。

参考