前のページ|次のページ

ENCRYPTKEY=データセットオプション

AES暗号化のキー値を指定します。

該当要素: DATAステップおよびPROCステップ
範囲: 1~64バイト
制限事項: SAS 9.4以降でのみ使用可能
AESで暗号化されたデータセットでのみ使用可能

構文

ENCRYPTKEY=key-value

構文の説明

key-value

暗号化のキー値を割り当てます。ENCRYPTKEY=データセットオプションは、ENCRYPT=AESと一緒に使用する必要があります。キー値の長さは最大で64バイトです。ENCRYPTKEY=キー値は、次のルールに従い、必要に応じて引用符を付けて作成します。

引用符なし
  • 英数字文字とアンダースコアのみ
  • 最大64バイト
  • 大文字と小文字の英字のみ
  • 先頭は必ず英字にする
  • 空白を含まない
  • 大文字小文字を区別しない
encryptkey=key-value
encryptkey=key-value1
一重引用符
  • 英数字文字、特殊文字およびDBCS文字
  • 最大64バイト
  • 大文字と小文字の英字のみ
  • 大文字小文字を区別する
encryptkey='key-value'
encryptkey='1234*#mykey'
二重引用符
  • 英数字文字、特殊文字およびDBCS文字
  • 最大64バイト
  • 大文字と小文字の英字のみ
  • マクロ解決が可能
  • 大文字小文字を区別する
encryptkey="key-value"
encryptkey="1234*#mykey"
%let mykey=abcdefghi12;
encryptkey=&key-value
ENCRYPTKEY=キー値でDBCS文字を使用する場合、文字列がUTF-8エンコーディングに変換された後、その文字列には 64バイトの制限が適用されます。DBCSによるキー値の長さを計算するには、次のDATAステップを使用します。
data _null_;
    key=length(unicodec('key-value','UTF8'));
    put 'key length=' key;
run;
AESで暗号化されたデータセットではENCRYPTKEY=キー値を変更できません。これを変更するにはデータセットの再作成が必要となります。

詳細

注意:
ENCRYPTKEY=キー値は記録しておく必要があります。
ENCRYPTKEY=キー値を忘れた場合、データは失われます。SASではENCRYPTKEY=キー値の回復をサポートできません。次の注がログに書き込まれます。
Note::If you lose or forget the ENCRYPTKEY= key value, there will be no way to open the file or recover the data.
AES暗号化を使用してSPD Engine データセットを作成する場合や同データセットにアクセスする場合、ENCRYPTKEY=データセットオプションを使用する必要があります。
ENCRYPTKEY=データセットオプションは、データセットを削除や置換から保護するものではありません。次のいずれかの方法を使用すれば、キー値を指定せずに暗号化されたデータセットを削除できます。
  • PROC DATASETSのKILLオプション
  • PROC SQLのDROPステートメント
  • DELETEプロシジャ
ENCRYPTKEY=データセットオプションは、データセットの中身に対してのみアクセスを拒否するものです。データセットを削除や置換から保護するには、そのデータセットにALTER= パスワードを含める必要があります。
AESで暗号化されたデータセットをコピーする場合、ENCRYPTKEY=キー値を指定する必要があります。SELECTステートメントで、データセット名の後にキー値を指定します。SELECTの使用例を次に示します。
copy in=OldLib out=NewLib; 
	select salary(encryptkey=key-value);
run;
ENCRYPTKEY=キー値で保護されているデータセットをDATASETSプロシジャで取り扱う場合、AGE、APPEND、CONTENTS、MODIFYの各ステートメントでキー値を指定できます。ENCRYPTKEY=データセットオプションは、SASデータセット名の後にかっこで囲んで指定するか、またはスラッシュの後に指定します。
マクロ変数をENCRYPTKEY=キー値として使用することもできます。マクロ変数を使用する場合、二重引用符を使用する必要があります。マクロ変数を定義する例を次に示します。
%let secret=MyValue;
次の例では、このマクロ変数をENCRYPTKEY=キー値として使用しています。
data my.dsname(encrypt=aes encryptkey="&secret");
このマクロ変数をENCRYPTKEY=キー値として指定する場合、そのマクロ変数を二重引用符で囲む必要があります。二重引用符を使用しない場合、予期せぬ結果が引き起こされることがあります。

例: ENCRYPTKEY=データセットオプションの使用

次の例ではENCRYPT=AESオプションを使用しています。
data spdelib.salary(encrypt=aes encryptkey=green);
   input name $ yrsal bonuspct;
   datalines;
Muriel    34567  3.2
Bjorn     74644  2.5
Freda     38755  4.1
Benny     29855  3.5
Agnetha   70998  4.1
このデータセットを使用するには、ENCRYPTKEY=キー値を指定します。
proc contents data=spdelib.salary(encryptkey=green);
run;
前のページ|次のページ|ページの先頭へ