2と3のリビジョン間の差分
2018-12-10 01:17:00時点のリビジョン2
サイズ: 6805
コメント:
2018-12-12 23:47:26時点のリビジョン3
サイズ: 7502
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 144: 行 144:

== Q.Route53って言ってるけどIAMしか書いてないぢゃないっすか ==
A.大丈夫だ。問題無い。

Route53の使い方的エッセンシャルな部分については普通にWebコンソールを使ってもらえば問題無いです。
そして外部からアクセスするためのAPIについてはWebコンソール外に用意されており、
必要なパラメータとアクセスについては(一部設定や引数などがあるものの)、cli53により実施する。
あとはアクセス制御の設定で、これについてはIAMで制御することになる。

AWS Route53を使用したDNSリソースレコードのAPIによる許可設定

  • AWS Route53はAWS(Amazone Web Service)のDNSサービスである。
  • Route53はマネージドサービスで、管理インターフェース・API機能込みで、おおよそ1ゾーン百数十円/月で利用できる。

  • クエリ数による従量課金?ほぼ無視して良いです。
  • ここではRoute53そのものの使い方は取り扱わない。
  • よってAPIを叩くにあたって設定すべき権限について解説する。
  • 想定クライアントは「ACMEクライアント」として例示する。

AWS側の設定

IAMポリシーの作成

route53-acme-dns-01

  • LE認証局(Let's Encrypt)に対してSSL証明書要求プロトコル(ACME)のDNS-01メソッドを使用するためのRoute53側の設定(共通設定)である。
  • 各ACMEクライアントは本設定に基づいて照会が許可される(各ゾーン中のレコードの照会および変更は別ポリシーにて定義)。
  • 下記設定の内、「アクセス元IPアドレス帯」を書き換えて使用する。
  • 指定したIPアドレス帯以外からのAPI呼び出しは無効になる。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "route53:ListHostedZones",
                "route53:ListHostedZonesByName"
            ],
            "Resource": "*",
            "Condition": {
                "ForAnyValue:IpAddress": {
                    "aws:SourceIp": [
                        "アクセス元IPアドレス帯"
                    ]
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "route53:GetChange",
            "Resource": "arn:aws:route53:::change/*",
            "Condition": {
                "ForAnyValue:IpAddress": {
                    "aws:SourceIp": [
                        "アクセス元IPアドレス帯"
                    ]
                }
            }
        }
    ]
}

route53-hosted-zone-ゾーン名

  • LE認証局(Let's Encrypt)に対してSSL証明書要求プロトコル(ACME)のDNS-01メソッドを使用するためのRoute53側の設定(共通設定)である。
  • 各ACMEクライアントは本設定に基づいて指定された「ゾーン名」に所属するレコードの更新が許可される。
  • この「ポリシー名」は例えば ninth-nine.com の場合「route53-hosted-zone-ninth-nine.com」となる。
  • 下記設定の内、「アクセス元IPアドレス帯」を書き換えて使用する。
  • 指定したIPアドレス帯以外からのAPI呼び出しは無効になる。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "route53:ListResourceRecordSets",
                "route53:ChangeResourceRecordSets"
            ],
            "Resource": "arn:aws:route53:::hostedzone/ホステッドゾーンID",
            "Condition": {
                "ForAnyValue:IpAddress": {
                    "aws:SourceIp": [
                        "アクセス元IPアドレス帯"
                    ]
                }
            }
        }
    ]
}

IAMグループの作成

route53-acme-dns-01

用途
  • Let's Encrypt のSSL証明書自動更新のためのグループ。基本的なアクセス許可を提供する。
適用済ポリシー
  • route53-acme-dns-01

IAMユーザーの作成(例)

ユーザー名

所属グループ名

追加適用ポリシー

発行済みアクセスキー

運用サーバー(例)

route53-acme-client-wiki

route53-acme-dns-01

route53-acme-hosted-zone-ninth-nine.com

XXXXXXXXXXXXXXXXXXXX

wiki.ninth-nine.com

クライアント側の設定

インストール

  • ports/devel/awscli
  • ports/dns/cli53

クレデンシャルファイルの作成

  • 発行したアクセスキーおよびシークレットアクセスキーをAPIクライアント側で使用するために「クレデンシャルファイル」を作成する。
  • APIを実行するクライアント(Webサーバーやメールサーバーなど)の所定のユーザー(dehydrated の利用においては root)のホームディレクトリをベースに以下の作業を実施する。

mkdir -p -m 0700 ~root/.aws
  • クレデンシャルファイル(~root/.aws/credentials)を以下のように作成する。この時、プロファイル名はIAMユーザー名と同じものとする。

[ユーザー名]
aws_access_key_id       = XXXXXXXXXXXXXXXXXXXX
aws_secret_access_key   = YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
  • この時、作成されたクレデンシャルファイルのパーミッションを変更すること。

chmod 0600 ~root/.aws/credentials

  • API設定に問題無いかチェックする。

aws --profile ユーザー名 configure list
   または
env AWS_PROFILE=ユーザー名 aws configure list
  • 当該APIか稼働しているか動作確認すること。

cli53 list --profile ユーザー名

よくある質問とその答え

Q.またまた~従量制なんだから高くなるんでないの?

A.ホスティングするゾーン(ドメイン)はYahoo、Googleクラスです!と言える者だけだが石を投げなさい。

料金表を見ながらの話になりますが、 標準クエリで100万クエリ/月を秒間(30日とする)で換算すると、0.39クエリ/秒になる。 まぁ個人サイトレベルなら余裕過ぎるレベル。

そこそこ目立つサイトで10クエリ/秒くらいだとすると(個人的見解です)、259万2千クエリ/月、それでも2USDも行かないくらい。

つまりワンコイン(500円)もあれば十分行ける数字ではある。

Q.Route53って言ってるけどIAMしか書いてないぢゃないっすか

A.大丈夫だ。問題無い。

Route53の使い方的エッセンシャルな部分については普通にWebコンソールを使ってもらえば問題無いです。 そして外部からアクセスするためのAPIについてはWebコンソール外に用意されており、 必要なパラメータとアクセスについては(一部設定や引数などがあるものの)、cli53により実施する。 あとはアクセス制御の設定で、これについてはIAMで制御することになる。

route53/DNSリソースレコードのAPIによる許可設定 (最終更新日時 2018-12-12 23:47:26 更新者 NorikatsuShigemura)