Skip Navigation
Show nav
Heroku Dev Center
  • Get Started
  • ドキュメント
  • Changelog
  • Search
  • Get Started
    • Node.js
    • Ruby on Rails
    • Ruby
    • Python
    • Java
    • PHP
    • Go
    • Scala
    • Clojure
  • ドキュメント
  • Changelog
  • More
    Additional Resources
    • Home
    • Elements
    • Products
    • Pricing
    • Careers
    • Help
    • Status
    • Events
    • Podcasts
    • Compliance Center
    Heroku Blog

    Heroku Blog

    Find out what's new with Heroku on our blog.

    Visit Blog
  • Log inorSign up
View categories

Categories

  • Heroku のアーキテクチャ
    • Dyno (アプリコンテナ)
    • スタック (オペレーティングシステムイメージ)
    • ネットワーキングと DNS
    • プラットフォームポリシー
    • プラットフォームの原則
  • コマンドライン
  • デプロイ
    • Git を使用したデプロイ
    • Docker によるデプロイ
    • デプロイ統合
  • 継続的デリバリー
    • 継続的統合
  • 言語サポート
    • Node.js
    • Ruby
      • Rails のサポート
      • Bundler の使用
    • Python
      • Django の使用
      • Python でのバックグランドジョブ
    • Java
      • Maven の使用
      • Java でのデータベース操作
      • Play Framework の使用
      • Java の高度なトピック
      • Spring Boot の使用
    • PHP
    • Go
      • Go の依存関係管理
    • Scala
    • Clojure
  • データベースとデータ管理
    • Heroku Postgres
      • Postgres の基礎
      • Postgres Getting Started
      • Postgres のパフォーマンス
      • Postgres のデータ転送と保持
      • Postgres の可用性
      • Postgres の特別なトピック
    • Heroku Redis
    • Apache Kafka on Heroku
    • その他のデータストア
  • モニタリングとメトリクス
    • ログ記録
  • アプリのパフォーマンス
  • アドオン
    • すべてのアドオン
  • 共同作業
  • セキュリティ
    • アプリのセキュリティ
    • ID と認証
    • コンプライアンス
  • Heroku Enterprise
    • Private Space
      • インフラストラクチャネットワーキング
    • Enterprise Accounts
    • Enterprise Team
    • Heroku Connect (Salesforce 同期)
      • Heroku Connect の管理
      • Heroku Connect のリファレンス
      • Heroku Connect のトラブルシューティング
    • シングルサインオン (SSO)
  • パターンとベストプラクティス
  • Heroku の拡張
    • Platform API
    • アプリの Webhook
    • Heroku Labs
    • アドオンのビルド
      • アドオン開発のタスク
      • アドオン API
      • アドオンのガイドラインと要件
    • CLI プラグインのビルド
    • 開発ビルドパック
    • Dev Center
  • アカウントと請求
  • トラブルシューティングとサポート
  • Integrating with Salesforce
  • データベースとデータ管理
  • Heroku Redis
  • Herosku Redis バージョン 4 と 5 のセキュリティ保護

Herosku Redis バージョン 4 と 5 のセキュリティ保護

日本語 — Switch to English

最終更新日 2021年12月28日(火)

Table of Contents

  • Stunnel の概要
  • Heroku Redis CLI

この記事は Redis バージョン 4 と 5 にのみ適用されます。Redis バージョン 6​ を使用して Premium、Private、または Shield Heroku データベースをプロビジョニングする場合は、この記事で説明されている Stunnel 手法の代わりに、その組み込み TLS を使用する必要があります。Heroku は、バージョン 4 より古い Redis バージョンをサポート​していません。

Redis では、バージョン 6 から TLS をネイティブでサポートしています。Redis 4 または 5 を使用している場合、dyno と Redis の間のデータ転送は、この記事の方法を使用しない限り暗号化されません。

Heroku Redis のデータの安全性とプライバシーをトランスポートレベルで向上させるには、Stunnel buildpack​ を使用します。この buildpack では、dyno と Heroku Redis インスタンスの間に SSL トンネルを構築し、データを安全に転送できるようにします。

Stunnel buildpack がなくても Heroku Redis 5 以前のバージョンに接続できますが、お勧めできません。この方法を使用しないと、暗号化していないデータが転送されます。

Stunnel の概要

Stunnel は、本番環境の各 Heroku Redis インスタンスにインストールされるソフトウェアです。これは、実行中の Redis プロセスと SSL 接続の間にプロキシを作成します。トランスポートレベルのセキュリティを確保するには、アプリケーションを実行する dyno 上に関連する Stunnel を作成する必要があります。Stunnel buildpack によって、アプリケーションコードを変更せずに、アプリケーションに暗号化が追加されます。

Stunnel buildpack の使用

Stunnel は、すべての Production 層の Heroku Redis インスタンスのサーバー側にすでに設定されています。このため、Heroku Redis と通信する dyno 側でトンネルの設定をする必要があります。

大まかに説明すると、Stunnel buildpack をインストールして Procfile​ を更新する必要があります。これを更新することで、Heroku Redis と通信する各プロセスタイプでも bin/start-stunnel​ を実行するようにします。

Heroku Redis Stunnel Buildpack README​ には、アプリケーションへの buildpack の追加のすべての詳細が含まれています。

buildpack をインストールした後、Stunnel buildpack を有効化または無効化するには、STUNNEL_ENABLED​ 環境設定を true​ または false​ に設定します。

Stunnel への直接接続

一部の Redis クライアントライブラリでは、Heroku Redis インスタンス上で利用できるサーバー側の Stunnel に直接接続できます。この場合は、Stunnel buildpack を使用せずに Stunnel に直接接続できます。

サーバー側の Stunnel プロセスは、Heroku Redis インスタンスのポートよりも 1 つ大きいポートで実行します。たとえば、Redis サービスがポート 6379​ で実行している場合、Stunnel はポート 6380​ をリッスンします。

Ruby の使用

Ruby​ を使用している場合は、次を使用して Stunnel に直接接続できます。

require 'uri'
url = URI.parse(ENV["REDIS_URL"])
url.scheme = "rediss"
url.port = Integer(url.port) + 1
$redis = Redis.new(url: url, driver: :ruby, ssl_params: { verify_mode: OpenSSL::SSL::VERIFY_NONE })

この方法は、redis​ gem 4.0.2​ 以上のバージョンにのみ適用されます。4.0.1​ 以下を使用して Heroku Redis に SSL 経由でネイティブ接続することはできません。これは、検証モードとして OpenSSL::SSL::VERIFY_NONE​ が無視されるためです。

Go の使用

Go​ を使用している場合は、次を使用して Stunnel に直接接続できます。

u, _ := url.Parse(s)
h, p, _ := net.SplitHostPort(u.Host)
port, _ := strconv.Atoi(p)
u.Scheme = "rediss"
u.Host = net.JoinHostPort(h, strconv.Itoa(port++))
c, _ := redis.DialURL(u.String(),  redis.DialTLSSkipVerify(true))
defer c.Close()

Node.js の使用

Node.js から Heroku Redis インスタンスに接続するために ioredis​ を使用している場合は、次を使用して Stunnel に直接接続できます。

var url   = require('url');
var Redis = require('ioredis');

redis_uri = url.parse(process.env.REDIS_URL);
var redis = new Redis({
  port: Number(redis_uri.port) + 1,
  host: redis_uri.hostname,
  password: redis_uri.auth.split(':')[1],
  db: 0,
  tls: {
    rejectUnauthorized: false,
    requestCert: true,
    agent: false
  }
});

Heroku Redis CLI

Heroku Redis CLI では、本番プランの Heroku Redis インスタンスにアクセスしようとするときは Stunnel 経由で接続します。

Stunnel サポートのない Hobby プランの場合、Heroku CLI では、暗号化せずに接続することについて確認を求める警告が表示されます。

$ heroku redis:cli -a example-app
 ▸    WARNING: Insecure Action
 ▸    All data, including the redis password, will be unencrypted.
 ▸    To proceed, type example-app or re-run this command with --confirm example-app
>

コマンドラインで --confirm​ フラグを使用すると、確認メッセージをスキップし、暗号化せずに Redis CLI に接続します。

$ heroku redis:cli --confirm example-app
Connecting to: REDIS_URL
ec2-11-11-11-11.compute-1.amazonaws.com:6699>

関連カテゴリー

  • Heroku Redis
暗号化鍵を使用した Heroku Redis の暗号化 Heroku Redis の Hobby 層のバージョンの非推奨化

Information & Support

  • Getting Started
  • Documentation
  • Changelog
  • Compliance Center
  • Training & Education
  • Blog
  • Podcasts
  • Support Channels
  • Status

Language Reference

  • Node.js
  • Ruby
  • Java
  • PHP
  • Python
  • Go
  • Scala
  • Clojure

Other Resources

  • Careers
  • Elements
  • Products
  • Pricing

Subscribe to our monthly newsletter

Your email address:

  • RSS
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku Blog
    • Heroku News Blog
    • Heroku Engineering Blog
  • Heroku Podcasts
  • Twitter
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku
    • Heroku Status
  • Facebook
  • Instagram
  • Github
  • LinkedIn
  • YouTube
Heroku is acompany

 © Salesforce.com

  • heroku.com
  • Terms of Service
  • Privacy
  • Cookies
  • Cookie Preferences