forked from TrueCloudLab/frostfs-s3-gw
70 lines
No EOL
19 KiB
XML
70 lines
No EOL
19 KiB
XML
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="1013px" preserveAspectRatio="none" style="width:649px;height:1013px;background:#FFFFFF;" version="1.1" viewBox="0 0 649 1013" width="649px" zoomAndPan="magnify"><defs/><g><rect fill="#DDDDDD" height="1001.4453" style="stroke:#181818;stroke-width:0.5;" width="271" x="372" y="6"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="54" x="480.5" y="18.0669">Neo Go</text><rect fill="none" height="469.9922" style="stroke:#000000;stroke-width:1.5;" width="510" x="10" y="102.5625"/><rect fill="#FFC0CB" height="75.3984" style="stroke:#000000;stroke-width:1.5;" width="356" x="20" y="197.9609"/><rect fill="#FFC0CB" height="46.2656" style="stroke:#000000;stroke-width:1.5;" width="193" x="20" y="358.625"/><rect fill="#FFC0CB" height="46.2656" style="stroke:#000000;stroke-width:1.5;" width="193" x="20" y="519.2891"/><rect fill="#FFC0CB" height="46.2656" style="stroke:#000000;stroke-width:1.5;" width="193" x="20" y="686.9531"/><rect fill="#FFC0CB" height="75.3984" style="stroke:#000000;stroke-width:1.5;" width="356" x="20" y="818.4844"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="53" x2="53" y1="56.4297" y2="969.1484"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="172" x2="172" y1="56.4297" y2="969.1484"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="301" x2="301" y1="56.4297" y2="969.1484"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="443" x2="443" y1="56.4297" y2="969.1484"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5.0,5.0;" x1="579" x2="579" y1="56.4297" y2="969.1484"/><rect fill="#E2E2F0" height="30.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="46" x="30" y="25.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="32" x="37" y="45.1279">User</text><rect fill="#E2E2F0" height="30.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="46" x="30" y="968.1484"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="32" x="37" y="988.1436">User</text><rect fill="#E2E2F0" height="30.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="62" x="141" y="25.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="48" x="148" y="45.1279">S3-GW</text><rect fill="#E2E2F0" height="30.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="62" x="141" y="968.1484"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="48" x="148" y="988.1436">S3-GW</text><rect fill="#E2E2F0" height="30.2969" style="stroke:#181818;stroke-width:0.5;" width="126" x="240" y="21.1328"/><rect fill="#E2E2F0" height="30.2969" style="stroke:#181818;stroke-width:0.5;" width="126" x="236" y="25.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="112" x="243" y="45.1279">FrostFS Storage</text><rect fill="#E2E2F0" height="30.2969" style="stroke:#181818;stroke-width:0.5;" width="126" x="240" y="968.1484"/><rect fill="#E2E2F0" height="30.2969" style="stroke:#181818;stroke-width:0.5;" width="126" x="236" y="972.1484"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="112" x="243" y="992.1436">FrostFS Storage</text><rect fill="#E2E2F0" height="30.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="134" x="376" y="25.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="120" x="383" y="45.1279">frostfsid contract</text><rect fill="#E2E2F0" height="30.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="134" x="376" y="968.1484"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="120" x="383" y="988.1436">frostfsid contract</text><rect fill="#E2E2F0" height="30.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="119" x="520" y="25.1328"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="105" x="527" y="45.1279">policy contract</text><rect fill="#E2E2F0" height="30.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="119" x="520" y="968.1484"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="105" x="527" y="988.1436">policy contract</text><polygon fill="#181818" points="160,83.5625,170,87.5625,160,91.5625,164,87.5625" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="53" x2="166" y1="87.5625" y2="87.5625"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="53" x="60" y="82.4966">Request</text><path d="M10,102.5625 L164,102.5625 L164,109.6953 L154,119.6953 L10,119.6953 L10,102.5625 " fill="#EEEEEE" style="stroke:#000000;stroke-width:1.5;"/><rect fill="none" height="469.9922" style="stroke:#000000;stroke-width:1.5;" width="510" x="10" y="102.5625"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="109" x="25" y="115.6294">signed request</text><polygon fill="#181818" points="289,136.8281,299,140.8281,289,144.8281,293,140.8281" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="172" x2="295" y1="140.8281" y2="140.8281"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="105" x="179" y="135.7622">Find Access Box</text><line style="stroke:#181818;stroke-width:1.0;" x1="301" x2="343" y1="169.9609" y2="169.9609"/><line style="stroke:#181818;stroke-width:1.0;" x1="343" x2="343" y1="169.9609" y2="182.9609"/><line style="stroke:#181818;stroke-width:1.0;" x1="302" x2="343" y1="182.9609" y2="182.9609"/><polygon fill="#181818" points="312,178.9609,302,182.9609,312,186.9609,308,182.9609" style="stroke:#181818;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="93" x="308" y="164.895">Check request</text><path d="M20,197.9609 L84,197.9609 L84,205.0938 L74,215.0938 L20,215.0938 L20,197.9609 " fill="#EEEEEE" style="stroke:#000000;stroke-width:1.5;"/><rect fill="none" height="75.3984" style="stroke:#000000;stroke-width:1.5;" width="356" x="20" y="197.9609"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="19" x="35" y="211.0278">alt</text><text fill="#000000" font-family="sans-serif" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="91" x="99" y="210.1714">[Check failure]</text><line style="stroke:#181818;stroke-width:1.0;" x1="173" x2="183" y1="236.2266" y2="232.2266"/><line style="stroke:#181818;stroke-width:1.0;" x1="173" x2="183" y1="236.2266" y2="240.2266"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="172" x2="300" y1="236.2266" y2="236.2266"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="95" x="189" y="231.1606">Access Denied</text><line style="stroke:#181818;stroke-width:1.0;" x1="54" x2="64" y1="265.3594" y2="261.3594"/><line style="stroke:#181818;stroke-width:1.0;" x1="54" x2="64" y1="265.3594" y2="269.3594"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="53" x2="171" y1="265.3594" y2="265.3594"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="95" x="70" y="260.2935">Access Denied</text><line style="stroke:#181818;stroke-width:1.0;" x1="173" x2="183" y1="301.4922" y2="297.4922"/><line style="stroke:#181818;stroke-width:1.0;" x1="173" x2="183" y1="301.4922" y2="305.4922"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="172" x2="300" y1="301.4922" y2="301.4922"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="74" x="189" y="296.4263">Access Box</text><line style="stroke:#181818;stroke-width:1.0;" x1="172" x2="214" y1="330.625" y2="330.625"/><line style="stroke:#181818;stroke-width:1.0;" x1="214" x2="214" y1="330.625" y2="343.625"/><line style="stroke:#181818;stroke-width:1.0;" x1="173" x2="214" y1="343.625" y2="343.625"/><polygon fill="#181818" points="183,339.625,173,343.625,183,347.625,179,343.625" style="stroke:#181818;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="71" x="179" y="325.5591">Check sign</text><path d="M20,358.625 L84,358.625 L84,365.7578 L74,375.7578 L20,375.7578 L20,358.625 " fill="#EEEEEE" style="stroke:#000000;stroke-width:1.5;"/><rect fill="none" height="46.2656" style="stroke:#000000;stroke-width:1.5;" width="193" x="20" y="358.625"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="19" x="35" y="371.6919">alt</text><text fill="#000000" font-family="sans-serif" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="91" x="99" y="370.8354">[Check failure]</text><line style="stroke:#181818;stroke-width:1.0;" x1="54" x2="64" y1="396.8906" y2="392.8906"/><line style="stroke:#181818;stroke-width:1.0;" x1="54" x2="64" y1="396.8906" y2="400.8906"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="53" x2="171" y1="396.8906" y2="396.8906"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="95" x="70" y="391.8247">Access Denied</text><polygon fill="#181818" points="431,429.0234,441,433.0234,431,437.0234,435,433.0234" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="172" x2="437" y1="433.0234" y2="433.0234"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="59" x="179" y="427.9575">Find user</text><line style="stroke:#181818;stroke-width:1.0;" x1="173" x2="183" y1="462.1563" y2="458.1563"/><line style="stroke:#181818;stroke-width:1.0;" x1="173" x2="183" y1="462.1563" y2="466.1563"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="172" x2="442" y1="462.1563" y2="462.1563"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="59" x="189" y="457.0903">User info</text><line style="stroke:#181818;stroke-width:1.0;" x1="172" x2="214" y1="491.2891" y2="491.2891"/><line style="stroke:#181818;stroke-width:1.0;" x1="214" x2="214" y1="491.2891" y2="504.2891"/><line style="stroke:#181818;stroke-width:1.0;" x1="173" x2="214" y1="504.2891" y2="504.2891"/><polygon fill="#181818" points="183,500.2891,173,504.2891,183,508.2891,179,504.2891" style="stroke:#181818;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="101" x="179" y="486.2231">Check user info</text><path d="M20,519.2891 L84,519.2891 L84,526.4219 L74,536.4219 L20,536.4219 L20,519.2891 " fill="#EEEEEE" style="stroke:#000000;stroke-width:1.5;"/><rect fill="none" height="46.2656" style="stroke:#000000;stroke-width:1.5;" width="193" x="20" y="519.2891"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="19" x="35" y="532.356">alt</text><text fill="#000000" font-family="sans-serif" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="91" x="99" y="531.4995">[Check failure]</text><line style="stroke:#181818;stroke-width:1.0;" x1="54" x2="64" y1="557.5547" y2="553.5547"/><line style="stroke:#181818;stroke-width:1.0;" x1="54" x2="64" y1="557.5547" y2="561.5547"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="53" x2="171" y1="557.5547" y2="557.5547"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="95" x="70" y="552.4888">Access Denied</text><polygon fill="#181818" points="567.5,596.6875,577.5,600.6875,567.5,604.6875,571.5,600.6875" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="172" x2="573.5" y1="600.6875" y2="600.6875"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="77" x="179" y="595.6216">Get policies</text><line style="stroke:#181818;stroke-width:1.0;" x1="173" x2="183" y1="629.8203" y2="625.8203"/><line style="stroke:#181818;stroke-width:1.0;" x1="173" x2="183" y1="629.8203" y2="633.8203"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="172" x2="578.5" y1="629.8203" y2="629.8203"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="50" x="189" y="624.7544">Policies</text><line style="stroke:#181818;stroke-width:1.0;" x1="172" x2="214" y1="658.9531" y2="658.9531"/><line style="stroke:#181818;stroke-width:1.0;" x1="214" x2="214" y1="658.9531" y2="671.9531"/><line style="stroke:#181818;stroke-width:1.0;" x1="173" x2="214" y1="671.9531" y2="671.9531"/><polygon fill="#181818" points="183,667.9531,173,671.9531,183,675.9531,179,671.9531" style="stroke:#181818;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="83" x="179" y="653.8872">Check policy</text><path d="M20,686.9531 L84,686.9531 L84,694.0859 L74,704.0859 L20,704.0859 L20,686.9531 " fill="#EEEEEE" style="stroke:#000000;stroke-width:1.5;"/><rect fill="none" height="46.2656" style="stroke:#000000;stroke-width:1.5;" width="193" x="20" y="686.9531"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="19" x="35" y="700.02">alt</text><text fill="#000000" font-family="sans-serif" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="91" x="99" y="699.1636">[Check failure]</text><line style="stroke:#181818;stroke-width:1.0;" x1="54" x2="64" y1="725.2188" y2="721.2188"/><line style="stroke:#181818;stroke-width:1.0;" x1="54" x2="64" y1="725.2188" y2="729.2188"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="53" x2="171" y1="725.2188" y2="725.2188"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="95" x="70" y="720.1528">Access Denied</text><polygon fill="#181818" points="289,757.3516,299,761.3516,289,765.3516,293,761.3516" style="stroke:#181818;stroke-width:1.0;"/><line style="stroke:#181818;stroke-width:1.0;" x1="172" x2="295" y1="761.3516" y2="761.3516"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="87" x="179" y="756.2856">User Request</text><line style="stroke:#181818;stroke-width:1.0;" x1="301" x2="343" y1="790.4844" y2="790.4844"/><line style="stroke:#181818;stroke-width:1.0;" x1="343" x2="343" y1="790.4844" y2="803.4844"/><line style="stroke:#181818;stroke-width:1.0;" x1="302" x2="343" y1="803.4844" y2="803.4844"/><polygon fill="#181818" points="312,799.4844,302,803.4844,312,807.4844,308,803.4844" style="stroke:#181818;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="93" x="308" y="785.4185">Check request</text><path d="M20,818.4844 L84,818.4844 L84,825.6172 L74,835.6172 L20,835.6172 L20,818.4844 " fill="#EEEEEE" style="stroke:#000000;stroke-width:1.5;"/><rect fill="none" height="75.3984" style="stroke:#000000;stroke-width:1.5;" width="356" x="20" y="818.4844"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="19" x="35" y="831.5513">alt</text><text fill="#000000" font-family="sans-serif" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="91" x="99" y="830.6948">[Check failure]</text><line style="stroke:#181818;stroke-width:1.0;" x1="173" x2="183" y1="856.75" y2="852.75"/><line style="stroke:#181818;stroke-width:1.0;" x1="173" x2="183" y1="856.75" y2="860.75"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="172" x2="300" y1="856.75" y2="856.75"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="95" x="189" y="851.6841">Access Denied</text><line style="stroke:#181818;stroke-width:1.0;" x1="54" x2="64" y1="885.8828" y2="881.8828"/><line style="stroke:#181818;stroke-width:1.0;" x1="54" x2="64" y1="885.8828" y2="889.8828"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="53" x2="171" y1="885.8828" y2="885.8828"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="95" x="70" y="880.8169">Access Denied</text><line style="stroke:#181818;stroke-width:1.0;" x1="173" x2="183" y1="922.0156" y2="918.0156"/><line style="stroke:#181818;stroke-width:1.0;" x1="173" x2="183" y1="922.0156" y2="926.0156"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="172" x2="300" y1="922.0156" y2="922.0156"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="63" x="189" y="916.9497">Response</text><line style="stroke:#181818;stroke-width:1.0;" x1="54" x2="64" y1="951.1484" y2="947.1484"/><line style="stroke:#181818;stroke-width:1.0;" x1="54" x2="64" y1="951.1484" y2="955.1484"/><line style="stroke:#181818;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="53" x2="171" y1="951.1484" y2="951.1484"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="63" x="70" y="946.0825">Response</text><!--MD5=[42d02a594b76d0027987bb99c8e9c014]
|
|
@startuml
|
|
|
|
participant User
|
|
participant "S3-GW"
|
|
collections "FrostFS Storage"
|
|
|
|
User -> "S3-GW": Request
|
|
|
|
group signed request
|
|
|
|
"S3-GW" -> "FrostFS Storage": Find Access Box
|
|
"FrostFS Storage" -> "FrostFS Storage": Check request
|
|
|
|
alt #pink Check failure
|
|
"FrostFS Storage" - ->> "S3-GW": Access Denied
|
|
"S3-GW" - ->> User: Access Denied
|
|
end
|
|
|
|
"FrostFS Storage" - ->> "S3-GW": Access Box
|
|
"S3-GW" -> "S3-GW": Check sign
|
|
|
|
alt #pink Check failure
|
|
"S3-GW" - ->> User: Access Denied
|
|
end
|
|
|
|
"S3-GW" -> "frostfsid contract": Find user
|
|
"frostfsid contract" - ->> "S3-GW": User info
|
|
"S3-GW" -> "S3-GW": Check user info
|
|
|
|
alt #pink Check failure
|
|
"S3-GW" - ->> User: Access Denied
|
|
end
|
|
|
|
end
|
|
|
|
"S3-GW" -> "policy contract": Get policies
|
|
"policy contract" - ->> "S3-GW": Policies
|
|
"S3-GW" -> "S3-GW": Check policy
|
|
|
|
alt #pink Check failure
|
|
"S3-GW" - ->> User: Access Denied
|
|
end
|
|
|
|
"S3-GW" -> "FrostFS Storage": User Request
|
|
"FrostFS Storage" -> "FrostFS Storage": Check request
|
|
|
|
alt #pink Check failure
|
|
"FrostFS Storage" - ->> "S3-GW": Access Denied
|
|
"S3-GW" - ->> User: Access Denied
|
|
end
|
|
|
|
"FrostFS Storage" - ->> "S3-GW": Response
|
|
"S3-GW" - ->> User: Response
|
|
|
|
box "Neo Go"
|
|
participant "frostfsid contract"
|
|
participant "policy contract"
|
|
end box
|
|
|
|
@enduml
|
|
|
|
PlantUML version 1.2022.13(Sat Nov 19 16:22:17 MSK 2022)
|
|
(GPL source distribution)
|
|
Java Runtime: OpenJDK Runtime Environment
|
|
JVM: OpenJDK 64-Bit Server VM
|
|
Default Encoding: UTF-8
|
|
Language: en
|
|
Country: US
|
|
--></g></svg> |