メインコンテンツまでスキップ

3) セキュリティ文書の暗号化

一般文書をセキュリティ文書に暗号化

API

MethodURL
POST/api/encryption

Request Body

NameRequiredTypeDescription
licenseKeyrequiredstringSHIELDRM 管理者ページの連携アプリ管理メニューで発行されたライセンスを入力
encTyperequiredstringドキュメントタイプ
D : DAC ドキュメント
M : MAC ドキュメント
G : GRADE ドキュメント
docListrequiredstringencTypeに応じた適切な権限リストを入力してください。
D : SECURITYDOMAIN^111001100|USER01^011001100
M : 0000001
G : 0000001|RND1^110001111|dev04^010001111
※ GおよびDの場合は、以下の「権限文字列」表を参照して入力してください。
srcFilePathrequiredstring原本一般文書のパス
srcFileNameoptionalstringセキュリティ文書ヘッダーに保存される元の文書名
- 未使用の場合、srcFilePath のファイル名が保存されます。
dstFilePathrequiredstring暗号化されたセキュリティ文書のパス
algorithmoptionalstringAES / ARIA
デフォルト値 : AES
sciServerIdoptional/requiredstring暗号化するSCIサーバーID
<span style={{color: 'red'}}>- マルチ SCI サーバー使用時の必須条件
extraInfooptionaljsonJSON形式の追加情報入力
(以下のextraInfoデータ説明表およびサンプルデータを参照)
decisionFactoroptionaljson登録された条件付きポリシーを適用するための追加情報の入力
(以下の decisionFactor データ説明表およびサンプルデータを参照)
serviceLinkeroptionaljsonSDFApp APIで使用するパラメータ
- systemNameの変更時に必須
ex) "{\"systemName\":\"SDF\"}"
systemName 예시 이미지
extraInfo データ説明表
KeyRequiredTypeDescription
sourcerequiredjson
namerequiredstring呼び出しシステム名
fromrequiredstring呼び出しシステムURL
userjson
idstringユーザーID
namestringユーザー名
departstringユーザー全体部門 (上位グループ/中位グループ/下位グループ)
dutystringユーザー職名
docUidstring暗号化ファイルの DOC_UID
parentUidstring親文書のUID
branchUidstring現在のUID
  • サンプルデータ
{
"source": {
"name": "EKMS",
"from": "https://devekms.softcamp.co.kr"
},
"user": {
"id": "ekmsTest@softcamp.co.kr",
"name": "ekmsTest",
"depart": "임직원/연구소/개발실/개발1팀",
"duty": "과장"
},
"docUid": "77*9Sw5WOOq1hO*_vQ7vv70D77*9Oei_",
"parentUid": "88*9Sw5WOOq1hO*_vQ7vv70D77*9Oei_",
"branchUid": "99*9Sw5WOOq1hO*_vQ7vv70D77*9Oei_"
}
decisionFactor データ説明表
KeyRequiredTypeDescription
userIdrequiredstring条件付きポリシーの構成員に該当する文書変換をリクエストしたユーザーID
ipAddressrequiredstring条件付きポリシーの位置(IP)に該当する文書変換をリクエストしたユーザーIP
  • サンプルデータ
{
"userId": "user1@socam.info",
"ipAddress": "10.10.10.100"
}
権限文字列 : ドキュメントタイプが D または G の場合に含まれる 9 桁の文字列の説明
1列2列3列4列5列6列7列8列9列
キーの区分読み取り権限編集権限復号化権限外部転送権限印刷権限マークの有無自動廃棄権限変更
1 : グループ
0 : 個人
1 : 権限あり
0 : 権限がありません
1 : 権限あり
0 : 権限がありません
1 : 権限あり
0 : 権限がありません
1 : 権限あり
0 : 権限がありません
1 : 権限あり
0 : 権限がありません
1 : マーキングあり
0 : マーキングなし
4 : 有効期限
2 : 出力回数
1 : 読み取り回数
0 : 影響なし
1 : 変更可能
0 : 変更できません
  • 例) 個人で読み取り権限、復号権限、外部転送権限があり、他の権限がない場合の権限文字列 => "010110000"

Response

NameTypeDescription
codeint0 : 成功
0以外の値 : エラー
messagestring"OK" : 成功
その他の値 エラーメッセージ

Examples

Request

  • Body
[단일 서버]
{
"licenseKey": "FEFF-0C448-B1D8-A1A9A",
"encType": "D",
"docList": "SECURITYDOMAIN^110001111",
"srcFilePath" : "/opt/shieldrm/data/test.xlsx",
"dstFilePath" : "/opt/shieldrm/dataout_test.xlsx",
"extraInfo": "{\"source\":{\"name\":\"EKMS\",\"from\":\"https://devekms.softcamp.co.kr\"}}",
"decisionFactor": "{\"userId\":\"user1@socam.info\",\"ipAddress\":\"10.10.10.100\"}"
}

[멀티 서버]
{
"sciServerId": "SCAM-ED72-262C-433A-0004",
"licenseKey": "FEFF-0C448-B1D8-A1A9A",
"encType": "D",
"docList": "SECURITYDOMAIN^110001111",
"srcFilePath" : "/opt/shieldrm/data/test.xlsx",
"dstFilePath" : "/opt/shieldrm/dataout_test.xlsx",
"extraInfo": "{\"source\":{\"name\":\"EKMS\",\"from\":\"https://devekms.softcamp.co.kr\"}}",
"decisionFactor": "{\"userId\":\"user1@socam.info\",\"ipAddress\":\"10.10.10.100\"}"
}

[헤더의 원본 문서 이름 변경 시]
{
"sciServerId": "SCAM-ED72-262C-433A-0004",
"licenseKey": "FEFF-0C448-B1D8-A1A9A",
"encType": "D",
"docList": "SECURITYDOMAIN^110001111",
"srcFilePath" : "/opt/shieldrm/data/test.xlsx",
"srcFileName" : "original.xlsx",
"dstFilePath" : "/opt/shieldrm/dataout_test.xlsx",
"extraInfo": "{\"source\":{\"name\":\"EKMS\",\"from\":\"https://devekms.softcamp.co.kr\"}}",
"decisionFactor": "{\"userId\":\"user1@socam.info\",\"ipAddress\":\"10.10.10.100\"}"
}

[systemName 변경 시]
{
"sciServerId": "SCAM-ED72-262C-433A-0004",
"licenseKey": "FEFF-0C448-B1D8-A1A9A",
"encType": "D",
"docList": "SECURITYDOMAIN^110001111",
"srcFilePath" : "/opt/shieldrm/data/test.xlsx",
"dstFilePath" : "/opt/shieldrm/dataout_test.xlsx",
"extraInfo": "{\"source\":{\"name\":\"EKMS\",\"from\":\"https://devekms.softcamp.co.kr\"}}",
"decisionFactor": "{\"userId\":\"user1@socam.info\",\"ipAddress\":\"10.10.10.100\"}",
"serviceLinker": "{\"systemName\":\"SDF\"}"
}

Response

  • 成功
{
"code": 0,
"message" : "OK"
}
  • 失敗
  • SDFコンテナエラー
  • Status code : 400 Bad Request
{
"code": 40010,
"message": "File is already encrypted."
}
  • SDFコンテナモジュール(SCSL)エラー
  • Status code : 500 INTERNAL_SERVER_ERROR
{
"code": -61,
"message" : "EXCEPTION error"
}
[토큰 검증 실패]
{
"code": 50001,
"message": "{\"code\":40101,\"message\":\"Invalid token\",\"detail\":\"invalid_token\"}"
}

[KMS 연결 실패]
{
"code": 50001,
"message": "An unexpected error has occurred in the internal system",
"detail": "I/O error on GET request for \"https://devkms.softcamp.co.kr:8080/drm/7FDKQsEK-QVGKyXA2-fx1LxIzy-SNIre0s9/key/0000003\": Connect to devkms.softcamp.co.kr:8080 [devkms.softcamp.co.kr/10.14.10.171] failed: Connection timed out: connect; nested exception is org.apache.http.conn.HttpHostConnectException: Connect to devkms.softcamp.co.kr:8080 [devkms.softcamp.co.kr/10.14.10.171] failed: Connection timed out: connect"
}

[KMS 키조회 실패]
{
"code": 40013,
"message": "Key not found in the keyVault",
"detail": "keyId : 0000011"
}
  • SKMSモジュール(SCKE)エラー
  • Status code : 500 INTERNAL_SERVER_ERROR
{
"code": 40003,
"message": "Failed create header",
"detail": "4020"
}

API内部で呼び出すSKMS APIおよびSCSL関数の整理

呼び出し順序APIおよび関数名
1SKMS JWT 発行 API 呼び出し : /api/oauth/token
2SCSL 暗号化関数の呼び出し : CloudAPIEncrypt()
3ヘッダーキー照会 API 呼び出し : /api/docu/headerKey
4SCSL ヘッダー情報取得関数呼び出し : dsGetFullHeaderEx()
5統合ログ送信API呼び出し : /log/container-linker