[Java] A new (Japanese) era for Java!

原文はこちら。
https://blogs.oracle.com/java-platform-group/a-new-japanese-era-for-java

2016年に今上天皇が皇太子さまに譲位する予定であることを発表されました。今上天皇は2019年4月30日(平成31年4月30日)に退位される予定で、2019年4月1日に日本の内閣が、2019年5月1日から始まる新しい元号を発表することになっています。
この新しい元号に備えるための手順をとってきましたが、新元号の発表までこのアップデートの最終化は待つ必要があります。
特にJDKにおいてはいくつかの変更があります。
  • グレゴリオ暦の日付を和暦に相当する日付に変換してテキストとして表示する場合、正しい元号名を知っておく必要があります。
  • 逆変換、つまり文字列表記の日付を正しい日時に変換する場合には、元号名称を解析し、どの西暦に相当するのかを知っておく必要があります。
  • Unicodeは、新しい元号名称を表現する合字を新たに追加します。
JDK 8以降、Java APIには新しいDate and Time API(JSR 310を参照)のほか、古いjava.util.Calendarクラスに日付を処理するためのメソッドが追加されました。すべての関連APIは、新しい時代を正しく処理するように更新されてきました。
JSR 310: Date and Time API
https://jcp.org/en/jsr/detail?id=310
新元号に備えて、JDK 12では新元号( “NewEra”)のプレースホルダー名を使用します。JDK 12を使用すると、新元号発表後にリリースされるアップデートで、新元号名がどのように処理されるのかがわかります。
新元号の発表後の次のアップデートリリースは2019年4月16日(PDT)を予定しています。すべてのサポート対象のJDKである7、8、11 LTS、そして12が新しい元号を扱えるようにアップデートされます。
これらのすべてのバージョンの中で、java.util.Calendarクラスは正しい値を理解し、返すためにアップデートされます。
import java.util.*;
import java.text.*;

...

  new SimpleDateFormat("GGGGy年M月d日", 
        Locale.forLanguageTag("ja-JP-u-ca-japanese")).
        format(new Calendar.Builder().
        setDate(2019, Calendar.MAY, 1).build().getTime());

    // before the update: 平成31年5月1日, 
    // after the update: 元号1年5月1日

    // On versions released after new announcement the 元号 will be replaced with the new era name
そしてjava.text.SimpleDateFormatを使った日付のパースは正しく動作します(訳注:現時点ではDataFormatのFULLスタイルを使わなければ変換できません)。
import java.text.*;

...

var sdf = new SimpleDateFormat("GGGGy年M月d日",
            Locale.forLanguageTag("ja-JP-u-ca-japanese"));  
            sdf.setLenient(false);
            new SimpleDateFormat("Y-M-d", Locale.US).format(sdf.parse("元号2年2月1日"));
    // => "2020-2-1"
    // with 元号 replaced with the new era name
JDK 8以後については、JSR 310 Data and Time APIもアップデートします (このAPIはJDK 7には含まれていません)。
import java.time.chrono.*;
import java.time.format.*;
import java.time.temporal.*;

...

    DateTimeFormatter.ofPattern("GGGGy年M月d日").
          withChronology(JapaneseChronology.INSTANCE).
          withLocale(Locale.JAPAN).
          format(JapaneseDate.of(2020, 2, 1));
    // => “元号2年2月1日”

    DateTimeFormatter.ofPattern("u-M-d").format(
          DateTimeFormatter.ofPattern("GGGGy年M月d日").
          withChronology(JapaneseChronology.INSTANCE).
          withLocale(Locale.JAPAN).
          withResolverStyle(ResolverStyle.STRICT).
          parse("元号2年2月1日"));
     // => “2020-2-1”


    JapaneseEra.of(3).getDisplayName(TextStyle.FULL,
          Locale.forLanguageTag("ja-JP-u-ca-japanese"));
    // => “元号”
    // with 元号  replaced with the new era name
JDK 8以後では、Unicodeコードポイント U+32FF がjava.util.Calendar クラスに入ります。このコードポイントは新元号の合字用に予約されています。

まとめると、以下の通りです。
  • 日本の新元号の発表後リリースされるJDKのアップデートで、新元号を正しく取り扱えるようにする
  • 新元号発表までは、JDK 12(そしてJDK 11も)は将来の挙動と同様ではあるものの、元号をプレースホルダー名(*)として使用する。
(*)文字列形式の日付のパースに問題があるため、パースが正しく機能するための4月のアップデートまで待つ必要があります。
[JDK-8217609] New era placeholder not recognized by java.text.SimpleDateFormat
https://bugs.openjdk.java.net/browse/JDK-8217609
(2019/04/01追記)
新元号は令和に決まりました。4月16日のCPU/PSUで反映されていることを確かめましょう…

(2019/04/17追記)
JDK 8u211/212、JDK 11.0.3、JDK 12.0.1のいずれでも、上記コードが正しく動作することを確認しました。プレースホルダーの箇所はもちろん「令和」に置き換わっています。

[Cloud]Grafana用クラウド監視データを提供/Oracle Delivers Open Source Cloud Monitoring Data with Grafana

原文はこちら。



オープンソース・ソフトウェアが次世代クラウドの適用とポータビリティを加速させています。オープンソースの技術とカルチャーを取り入れることで、分散した環境にまたがるクラウド管理をシンプルにでき、クラウドを相互運用可能でポータブルかつスケーラブルにすることができます。オープンソースなしでは、特定のクラウドモデルにロックインされてしまうでしょう。

Oracle Cloud Infrastructure Data Source for Grafanaのリリースをお伝えできて興奮しています。Grafanaは分析と監視のための先進的なオープンソースプラットフォームで、Oracle Cloud Infrastructureをお使いのお客様からの多くのご要望がありました。以前に行ったOracle Cloud Infrastructure内でのPrometheusの利用に加えてさらに堅牢な監視を可能にする今回のGrafanaの統合に関して、我々はGrafana Labsと緊密に連携してきました。
Cloud nativeのワークロードが求める監視可能性の強化について、Oracle Cloud Infrastructureはネイティブのものとサードパーティのもの両方の様々なツールで実現できるようにしています。Oracle Cloud Infrastructure Data Source for Grafanaにより、データを探索したり、ログを分析したり、Grafana 6.0の持つ様々な機能を利用する新たな方法が提供されます。
2018年12月のKubeCon + CloudNativeConで発表したOracle Cloud Native Frameworkのリリースは今後も続きます。このフレームワークには、いずれもマネージドサービスとして提供するKubernetesOracle Cloud Infrastructure Registry、可視性の拡充やアプリケーション定義、開発とプロビジョニング機能などから成るOracle Cloud Infrastructure cloud native servicesが含まれます。我々はOracle Cloud Infastructureおよびハイブリッドやマルチクラウド環境をお使いのお客様に対して、最良の可視性を提供することに力を入れています。そのために、Oracle Cloudのサービスをオンプレミスで動かせるようCloud at Customerを提供したり、Oracle Autonomous Databaseをはじめとするエンタープライズワークロードのための最も自動化され高性能な環境を提供しています。
Oracleは長年にわたりオープンソースにコミットしてきており、2017年からはCloud Native Computing Foundationのプラチナメンバーになっています。どこでも動かせるスケーラブルなファンクション基盤であるFn Projectへの貢献に示される通り、オープンソースへの注力は継続していきます。マネージドサービスをお求めなら、プロプライエタリなAPIであなたをロックインしたりすることがないオープンなソリューションであるOracle Functions (FaaS)もあります。Oracle Functionsで開発したものは、Fn Projectであればどこでも動かすことができます。
ハイブリッドやマルチクラウドなど環境をまたいだイベントとタスク実行のストリーミングについてのログ出力・分析のためのアーキテクチャそのものはもちろん、そのスケールとパフォーマンスも重要です。このことから、イベント監視、問題の隔離、および確実で堅牢なセキュリティフレームワークの必要性が増すでしょう。
Oracle Cloud Infrastructure Data Source for Grafanaは、オープンソースのソリューションを促進し、エンタープライズのお客様に提供することで、Oracle Cloud Infrastructureとハイブリッド、マルチクラウドのワークロード管理の選択肢と柔軟性を提供していくという我々の姿勢を示しています。

[Cloud]OCI WAFのリリースのご案内/Introducing the Oracle Cloud Infrastructure Web Application Firewall

原文はこちら。


Oracle Cloud Infrastructure上のワークロード、また、マルチクラウドのWebアプリケーション向けのOracle Cloud Infrastructure Web Application Firewall (WAF)をリリースしたことをご案内します。Oracle Cloud Infrastructure WAFは、インターネットに面するWebアプリケーションを悪意のサイバー攻撃やスクレイピング・ボットから防御するための、エンタープライズグレードでクラウドベースのセキュリティソリューションです。2018年のOracleとKPMGによるCloud Threat Reportによれば、回答者の51%が、不正アクセスから組織の機密データを守る方法としてWebアプリケーションファイアウォールが最も優先度が高いと回答しています。

今日では、Webアプリケーションはデジタルビジネスの中核を成していますが、サイトに侵入しようという悪意を持った者によるサイバー攻撃の脅威に恒常的にさらされています。もし侵入を許せば、データを盗まれたり、不正なソフトウェアをサイトを訪れるお客様に広められてしまったり、評判を傷つけられたりしてしまいます。なのでクラウドにワークロードを移行しようとしているすべての企業にとってセキュリティが一番の関心事であること、また、Webアプリケーションファイアウォールが今日のデジタルビジネスにとって絶対必要だとみなされることに不思議はありません。Webアプリケーションファイアウォールなしでは、多くの企業は重要なアプリケーションやデータ、サービスをクラウドに移行しようとも考えないでしょう。Oracle Cloud Infrastructure WAFは、Oracle Cloud Infrastructure、オンプレミス、マルチクラウドのワークロードに安全と安心を提供します。

WAFサービスはサイバー攻撃から多層的なアプローチでWebアプリケーションを守ります。今回のリリースでは、Open Web Access Security Project(OWASP)のものや特定のアプリケーション、特定の規制準拠のためのものなど、250以上の定義済みルールが含まれています。WAFにはまた、Webroot BrightCloud®を含む複数のソースを統合した脅威インテリジェンスも提供します。管理者はアクセス制御を地理、IPアドレスのホワイトリスト/ブラックリスト、HTTP URLやヘッダの特徴にもとづいて行うことができます。ボット対策にはJavaScript受け入れ、CAPTCHAやデバイス認証、ヒューマンインタラクション・アルゴリズムなどのより高度なチャレンジを提供しています。WAFサービスにアプリケーションを登録しておくことで、レイヤー7分散DDoS攻撃から守ります。

WAFの仕組み

Oracle Cloud Infrastructure WAFはリバースプロキシとして動作し、通信フローやリクエストがもとのWebアプリケーションに到達する前に監査をします。また、Webアプリケーションサーバからエンドユーザーへのいずれのリクエストも監査します。
この強力なサービスによって、アプリケーションサーバからのデータ漏えいを制御し、外部の脅威からサーバを守ることができるようになります。

WAFの統合

Oracle Cloud Infrastructure WAFは他のOracle Cloud Infrastructureのアプリケーション、サービスとコンソール上で密に統合されており、セットアップと管理が簡単にできます。たとえば:
  • WAFのポリシーにタグを付け、コストを追跡する
  • Identity and Access Management(IAM)を用いてWAF管理へのアクセス制御を行う
  • 監査サービスにWAFの変更を記録
WAFはEdgeサービス・メニューの配下にあります。パッシブ検知用の定義済みルールを有効にしたり、Webアプリケーションのリバースプロキシ―として個別のルールでWAFにブロックを行わせたりできます。

数百の準備済み防御ルール

WAFを通ったトラフィックのログはコンソール上で分析することもできますし、エンタープライズSIEMに引き入れることもできます。
詳細なアプリケーションログと可視性
コンソール上での統合に加えて、WAFでは堅固なRESTful APIの利用も可能です。これには複数の言語のSDKと、CLIおよびTerraformが含まれます。

主要なユースケース

以下はWebアプリケーションファイアウォールのユースケースの一部です:
  • サイバー攻撃からの防御:Oracle Cloud Infrastructure WAFはクラウドベースで提供され、OWASPのルールセットに加え、250のルールセットをサポートしています。こうしたルールを使い、重要なWebアプリケーションを悪意のサイバー攻撃から守りましょう。インカミングリクエストはこれらのルールにより攻撃ペイロードを含んでいないか評価されます。リクエストが攻撃であると判断された場合、WAFはそのリクエストをブロックするか、またはアラートを挙げます。こうした攻撃は多種多様で、SQLインジェクションやクロスサイトスクリプティング、HTMLインジェクションなどの脅威を含んでいますが、いずれもWAFルールで検知、ブロックが可能です。
  • データプライバシー標準のためのアクセス制御:アクセス制御を用いて重要なWebアプリケーション、データやサービスへのアクセスをコントロールしましょう。例えば、リージョンベースのアクセス制御はEUのGDPRコンプライアンス要件にぴったりです。しばしば、あるサービスの提供をGDPRに則った特定の地域に限る必要があります。リージョンベースのアクセス制御を用いてユーザーアクセスをある地域に限定し、たとえばアメリカにあるサーバーから情報を取得できないようにする、といったことが可能です。あるいは、特定の国からのアプリケーションアクセスを完全にブロックするといったこともできます。たとえば、アジアの国々とのビジネスを行っていない場合に、それらの国々からのアクセスをブロックする、といったように。
  • 既存の管理システムとの統合:RESTful APIは、WAFへの十全なシステム間インターフェースを提供します。すでにバックエンドの管理システムを保持しており、コンソールは不要なので、WAFを直接既存管理システムと統合したいというときにはこれは理想的です。
  • ボット対策:インターネット上では、ボットによるトラフィックは人間によるそれよりも多くなっています。ボットの大半は悪意のないものですが、しかしそれゆえ単にボットを全てブロックしてしまうということもできません。JavaScriptチャレンジ、CAPTCHAチャレンジ、ホワイトリスト機能をWAFルールセットと併せて用いることで、良いボットをとおして悪いボットをブロックすることが可能です。
  • Hybrid and multicloud protection:ハイブリッドおよびマルチクラウドの防御:Many 多くのクラウドプロバイダがWebアプリケーションファイアウォールの防御を自身のクラウド上のアプリケーションのみに制限しています。Oracle Cloud Infrastructure WAFではそのようなことはありません。Oracle Cloud Infrastructure上のワークロードに加え、WAFはオンプレミスとマルチクラウド環境も防御します。Oracle Cloud Infrastructureへの移行にあたり、単一のWebアプリケーションファイアウォールでいずれの環境も防御できるというのは非常に重要なことです。移行のそれぞれのフェーズ―クラウド上でのテスト、移行とカットオーバー―でWAFがあなたの環境を防御します。

まとめ

Oracle Cloud Infrastructure WAFは、もはやVPNや専用線の必要なしにインターネットに接するWebアプリケーションを実現するための鍵となります。Oracle Cloud Infrastructure WAFについての詳細は、こちらのWebサイトまで。