AWS CLI + MFA を試してみた

awsmfa を利用してみた

コマンドを一発打つだけで一時セッションが発行される

  • MFA設定した環境でもコマンド一つでセッションが保存されるため特に困らない
  • ただ、yubikeyなどの物理キーがないときにMFAのsecret をどう保存したらよいかがわからなかった

設定したポリシー

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllDenyWithoutMFA",
            "Effect": "Deny",
            "Action": [
                "*"
            ],
            "Resource": [
                "*"
            ],
            "Condition": {
                "BoolIfExists": {
                    "aws:MultiFactorAuthPresent": false
                }
            }
        }
    ]
}
# エラー確認
aws ec2 describe-instances  --region ap-northeast-1 --profile mfa-test
An error occurred (UnauthorizedOperation) when calling the DescribeInstances operation: You are not authorized to perform this operation.
# MFA不要な一時キー発行 を発行して .aws/credentials の profile mfa  に登録
awsmfa --serial-number arn_of_mfa_device --mfa-profile-name mfa --profile mfa-test ワンタイムパスワード
# 一時セッションで実行
aws ec2 describe-instances  --region ap-northeast-1 --profile mfa
{
    "Reservations": []
}

日記

今週やったこと

  • Python 3.9で動かしていた手元用ツールをPython 3.10に移行
  • 家事
    • 粗大ごみを予約した
    • メルカリに出そうと残しておいた固定電話を燃えないゴミに入れた
    • ダンボールをまとめた
    • スマホSUICA残高を見れるようにした
    • Windows PCの再設定
    • 自転車の前輪のパンク修理(リムテープ交換とチューブ交換)
  • 勉強
  • 趣味
    • 弦の張替え
    • 音階練習
    • 膝コロ30回
    • brew upgrade

わかったこと

  • EssentialPhoneに NFCがついていた

つぎにやること

embulkの設定ファイルに日本語を入れる

input用のSQL内に日本語を書いていたら動かなかった。

localesパッケージと LANGの設定が必要でした。

FROM openjdk:8-jdk-slim
ARG embulk_version="0.9.23"
RUN apt update && apt install -y \
  curl \
  locales \
  && apt-get clean \
  && rm -rf /var/lib/apt/lists/*

RUN localedef -f UTF-8 -i ja_JP ja_JP.UTF-8
ENV LANG="ja_JP.UTF-8" \
    LANGUAGE="ja_JP:ja" \
    LC_ALL="ja_JP.UTF-8"

# install embulk
RUN curl --fail --create-dirs -o /usr/bin/embulk \
  -L https://github.com/embulk/embulk/releases/download/v${embulk_version}/embulk-${embulk_version}.jar \
  && chmod +x /usr/bin/embulk

CMD ["/bin/sh"]

参考にした記事 - qiita.com

raspbian 10で isc-dhcp-serverが再機動時に起動失敗する

原因

isc-dhcp-server の 起動順序は $network のあとになっているが、dhcpcd がIPを割り当てるよりも先に起動してしまうため

対処

systemd で起動しているのだから、 isc-dhcp-server が fail したら自動再機動するようにした。

対処内容

cat /etc/systemd/system/isc-dhcp-server.service.d/10-additional.conf

[Unit]
SourcePath=/etc/init.d/isc-dhcp-server
[Service]
Type=forking
PIDFile=/var/run/dhcpd.pid
RemainAfterExit=no
Restart=on-failure
RestartSec=15s

ファイルを置いたら

sudo systemctl daemon-reload
sudo systemctl restart isc-dhcp-server

動作テスト

異常終了させたかったので、kill -kill で殺した。

kill -kill isc-dhcp-server

うまくうごいたので、再起動を試み無事dhcpdが起動した

ESETをインストールしたときのメモ

環境

  • OS: macOS Mojave 10.14.6
  • 型番: MacBookAir6,1
  • 言語: 英語
  • ESETのバージョン: ESET Cyber Security V6.8

英語環境でインストーラが動作しないのでワークアラウンド

言語設定が英語の場合、Setup が起動しない

# CLIから実行してみる
$ /Volumes/Setup/Setup.app/Contents/MacOS/Setup
2020-02-11 07:36:43.064 Setup[4585:41589] Unable to load nib file: MainMenu, exiting

# 英語環境に、MainMenu.nibがない
$ ls /Volumes/Setup/Setup.app/Contents/Resources/{en,ja}.lproj
/Volumes/Setup/Setup.app/Contents/Resources/en.lproj:
InfoPlist.strings

/Volumes/Setup/Setup.app/Contents/Resources/ja.lproj:
InfoPlist.strings  MainMenu.nib

日本語のMainMenu.nibをコピーして動かす

cp -R /Volume/Setup ~/Downloads
cd ~/Downloads/Setup/Setup.app/Contents/Resources
cp ja.lproj/MainMenu.nib en.lroj
~Downloads/Setup/Setup.app/Contents/MacOS/Setup

アンインストール

インストール時に用いた eset_cybersecurity_installer.dmg から行う

Pro 版との違い

nanopi 再インストールメモ

ファイルサーバにしていたnanopiがOS領域にしていたSDカードが壊れたので再インストールした。

uart1を設定しないと行けないのを忘れていて苦労したのでメモを残す

作業メモ

  1. armbian (debian buster) をダウンロードしてSDカードに焼く
  2. SDカードを刺して起動
  3. コンソールはUART ↔ USB で Linux端末より取得 sudo cu -s 115200 -l /dev/ttyUSB0
  4. Permission denied だったので、sudo chgrp root /dev/ttyUSB0
  5. useradd / sudo 設定
  6. emmc での起動に変更する
  7. sudo armbian-config → system → Install → Boot from eMMC でemmcにファイルシステムをコピー
  8. ファイルシステムext4を選択した
  9. reboot
  10. armbian-configで各種設定をする
  11. Personal → Timezone → Asia/Tokyo
  12. System → Hardware → uart1 を有効化 (mh-z19をuart1につなぐため)
  13. reboot
  14. ansibleで設定投入
  15. ansible-playbook -i production -l nanopi site.yml
    • 各種デーモンを設定
      • google-home-notifier
      • homeassistant
      • netatalk (2.x → 3.x)
      • samba
      • unbound
      • mackerel-agent
      • co2 と 気温を mackerelに登録するdaemon登録

残タスク

  • mackerelへのメトリクス登録をhost metrics化して、mackrel-agentに統合
  • homeassistantのバージョンアップ対応
    • 認証変更
    • tts変更
    • homeassistantと赤外線リモコンの連携
  • wifiの設定

starman にPLACK_ENVを渡さないと、PLACK_ENV=depoymentになる

Qiitaに書いたものの転載

タイトルそのままです。

starman コマンドのデフォルトのPLACK_ENVはdepoyment になるようです。

久しぶりに触ったので小一時間悩んだ。。。

starman  -e 'sub { [q{200}, [ qw(Content-Type text/html) ], [ $ENV{PLACK_ENV} ] ];}'

curlで叩いてみる

$ curl http://localhost:5000
deployment

plackupから叩くと development になります。

plackup -s Starman  -e 'sub { [q{200}, [ qw(Content-Type text/html) ], [ $ENV{PLACK_ENV} ] ];}'
$ curl http://localhost:5000
development