APIキーによるTwilio認証の向上
読む所要時間: 10 分
Twilioアカウントを作成すると、アカウント文字列ID(SID)と認証トークンが生成されます。これらの認証情報を使用すると、Twilio APIで使用可能なすべての関数を実行できます。
アカウントSIDと認証トークンをデバイスや同僚に渡すと、これらの認証情報が侵害されるリスクが高まります。幸い、Twilioはこのリスクを最低限に抑える機能を提供しています。この記事では、以下の内容を取り上げます。
- 認証トークン
- サブアカウント
- APIキー
認証トークン
新しいアカウントまたはサブアカウントを作成すると、TwilioはそのアカウントのアカウントSIDと認証トークンを生成します。これらの認証情報は、アカウントのダッシュボードページで確認できます。
![アカウントSIDと認証トークンを矢印で示したTwilioアカウントダッシュボード。](/content/dam/twilio-com/global/en/blog/legacy/2021/better-twilio-authentication-csharp-twilio-api-keys/Console_Home.webp)
これらの認証情報は、CLI、SDK、またはAPIを直接使用してTwilioと通信するために、頻繁に使用されます。デフォルトでは1つの認証トークンしか存在しないため、この認証トークンの共有を回避し、侵害されるリスクを最低限に抑える必要があります。何らかの理由で認証トークンが侵害された場合は、セカンダリ認証トークンを作成してローテーションし、リークされたトークンが役に立たなくなるようにします。
セカンダリ認証トークンを作成するには、次の手順に従います。
- 右上のナビゲーションにある[Account](アカウント)リンクをクリックします
- サブメニューで[API keys & tokens](APIキーとトークン)をクリックします。
- ページの最後までスクロールして[Request a Secondary Token](セカンダリトークンをリクエストする)をクリックします。
セカンダリトークンの取得後、このトークンをプライマリトークンに昇格できます。これにより、以下に示すように、古いプライマリトークンが削除され、使用できなくなります。
残念ながら、これらのトークンのローテーションにはTwilio Consoleを使用する必要があります。APIを使用してAPI認証情報トークンをローテーションすることはできません。ただし、APIキーをローテーションすることはできます。これについては、この投稿で後述します。
サブアカウント
サブアカウントはアカウントと同じですが、親アカウントにより所有されており、親アカウントで管理できます。親アカウントの認証トークンを使用する代わりに、サブアカウントの認証トークンを使用できます。サブアカウントの認証トークンが侵害された場合、そのトークンを使用して親アカウントまたは他のサブアカウントのリソースにアクセスすることはできません。
Twilio Consoleを使用してサブアカウントを作成するには、次の手順に従います。
- 右上のナビゲーションにある[Account](アカウント)リンクをクリックします
- サブメニューで[Subaccounts](サブアカウント)をクリックします
- 他のサブアカウントがある場合はプラス(+)アイコンをクリックします。ない場合は[Create new Subaccount](新規サブアカウントの作成)ボタンをクリックします
- サブアカウントに分かりやすい名前をつけます
- [Create](作成)ボタンをクリックします
TwilioのCLI、SDK、APIを使用してサブアカウントを作成することもできます。詳細はTwilioのドキュメントをご覧ください。
APIキー
APIキーはTwilioのサービス認証に推奨される方法です。APIキーには、標準とメインの2つのタイプがあります。
標準APIキーを使用すると、TwilioのAPIのすべての機能にアクセスできます。ただし、APIキー、アカウント構成、サブアカウントの管理は除きます。
メインAPIキーのアクセス権は標準キーと同じですが、APIキー、アカウント構成、サブアカウントも管理できます。メインAPIキーは、認証トークンを使用している場合と同じレベルのアクセスを提供します。
Twilio Consoleを使用してAPIキーを作成するには、次の手順に従います。
- 右上のナビゲーションにある[Account](アカウント)リンクをクリックします
- サブメニューで[API keys & tokens](APIキーとトークン)をクリックします。
- [Create API key](APIキーを作成)ボタンをクリックします
- APIキーに分かりやすい名前をつけます
- 最も近い地域を選択します
- キータイプを標準またはメインのどちらにするか選択します
CLI、SDK、APIを使用して標準APIキーを作成することもできます。詳細はTwilioのドキュメントをご覧ください。APIキーを管理するには、認証トークンまたはメインAPIキーで認証される必要があります。
APIキーのローテーション
API認証情報の代わりにAPIキーを使用するメリットの1つは、APIを使用してAPIキーの作成と削除が可能であることです。この場合、予防措置としてプログラムによりAPIキーをローテーションできます。
Twilio CLIとPowerShellを使用してAPIキーをローテーションする方法は次のとおりです。
注記: このコードを実行する前に、Twilio CLIがインストール済みであることを確認してください。
警告: APIキーのローテーションが適切に処理されるように、アプリケーションの開発とテストを実施してください。
APIキーは必要な数だけ作成できますが、API認証情報の場合、アカウントごとに2つ(プライマリとセカンダリ)のトークンしかありません。そのため、チームメイトやアプリケーションに渡すのは、API認証情報ではなくAPIキーにする必要があります。そうすることにより、使用されていないAPIキーを安全に取り消すことができます。
認証トークンからAPIキーへの移動
すでにコードで認証トークンを使用している場合は、数行を変更するだけでAPIキーの使用に切り替えることができます。Twilio Consoleから認証トークンの一部を取得し、環境変数にローカルに保存して、コードを実行する必要があります。その方法の詳細については、Twilio認証情報を安全に保存する手順を実行します。
C#を使用し、API認証情報によりSMSを認証、送信する方法は次のとおりです。
まず、username
パラメータとしてアカウントSIDを、password
パラメータとして認証トークンをTwilioClient.Init
に渡します。次に、MessageResource.Create
を使用してテキストメッセージを送信します。
TwilioClient.Init
に渡したパラメータを更新し、(API認証情報ではなく)APIキーで認証します。
まず、(アカウントSIDではなく)APIキーSIDをusername
パラメータに渡します。次に、(認証トークンではなく)API Key Secretをpassword
パラメータに渡します。最後に、Account SIDをaccountSid
パラメータに渡します。
まとめ
TwilioのAPIでは、ユーザー名としてのアカウントIDと、プライマリまたはセカンダリトークンを使用して認証を行えます。プライマリトークンが侵害された場合、セカンダリトークンをプライマリトークンに昇格させると、古いプライマリトークンは使用できなくなります。
アカウントをサブアカウントでセグメント化することにより、認証情報を保護できます。サブアカウントの認証トークンまたはAPIキーが侵害された場合、トークンはサブアカウントのリソースへのアクセスにのみ使用できます。
現在、TwilioのAPIで認証を行う際には、APIキーを使用することが推奨されています。必要な数のAPIキーを作成し、侵害された場合やすでに使用されていない場合には削除できます。
Niels Swimberghe氏はベルギー人のフルスタック開発者であり、テクニカルコンテンツクリエイターとして米国で活動しています。Swimberghe氏へのご連絡は、Twitter @RealSwimburgerにお願いします。.NET、Azure、Web開発などについては、swimburger.netでブログをフォローいただけます。