




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Aqua容器安全解決方案
POC測試步驟
edvance
安領科技
2017-10-27
Version[1.0]
版權說明
包含于此篇文檔中的信息屬于商業或財務機密(或授權)信息。文檔為安
領有限公司所專有,且只用于評估目的,除非被安領有限公司授權,否則
此文檔的全部或者部分信息不得用于再版或者引用。
版本歷史
日期版本描述
2017-10-271.0
內容
1.準備工作5
2.鏡像掃描6
2.1白名單鏡像...................................................6
2.2禁止未掃描鏡像運行..........................................6
2.3鏡像安裝包的黑白名單........................................6
2.4自定義規則掃描鏡像...........................................6
2.5包含敏感信息的鏡像..........................................7
2.6結合JENKINS進行鏡像掃描......................................7
3.威脅阻止9
3.1PROCESSLIMITS..................................................................................................9
3.2只允許LINK內容器互相通信....................................9
4.徽感信息管理10
4.1自納管SECRET...............................................................................................10
4.2CYBERARK納管SECRET....................................................................................10
5.容器運行限制12
5.1以指定用戶運行容器..........................................12
5.2限制容器運行時的只讀文件...................................13
5.3限制容器運行時的可執行命令.................................14
5.4限制CONTAINER運行時的進出網絡...............................15
5.5黃金鏡像一保證CONTAINER不對容器內任何文件進行修改..........16
5.6限制CONTAINER不以特權模式運行...............................17
5.7限制CONTAINER掛我的數據卷..................................17
5.8自主學習并生成安全規則.....................................18
5.9限制容器運行時使用的資源及進程數...........................19
5.10環境變量加密...............................................20
6.網絡控制21
6.1容器與HOST之間網絡限制.....................................21
6.2容器與容器間的網絡限制.....................................21
7.主機權限管控23
7.1角色權限管控...............................................23
7.2自定義R01E角色.............................................23
7.3通過IMAGE的LABEL來分發權限.................................24
8.其他25
8.1ROOTPLEASE容器修改主機配置文件..............................25
8.2私有REGISTRY搭建............................................25
8.3SWARM部署AQUAAGENT...............................................................................26
8.4RANCHER部署AQUAAGENT.............................................................................27
1.準備工作
在DockerHost主機上安裝完AquaServer環境后,可執行以下步驟將測試用鏡像及配置文件導入到環境
中。
1.將optfolder下的文件夾上傳到DockerHost的/opt路徑下
2.通過df-h命令確保測試主機/var路徑掛載磁盤剩余空間大于10G,否則導入鏡像會導致磁盤滿
3.將測試鏡像上傳到DockerHost主機內,并通過dockerloadstar包路徑,來導入測試鏡像
4.登錄AquaWeb端>>lmages?Addimages?localengine,手動逐一添加步驟2里導入的鏡像文件。
除了imagescan/labeltest外都導入,此鏡像將用于未掃描鏡像測試。
注:如果不想逐一添加也可配置自動拉取本地鏡像,System?lntegrations?LocalEngine〉〉勾選
AutomaticallyPullNewImages。這樣AquaAgent就會在配置的指定拉取時間拉取本地鏡像進行掃描。
國Audit
Integrations
Administration
ModifyRegistry:LocalEngine
合Policiesv
RegistryTypeDockerEngine
ImageAssurance
Endpointunlx-y/ZVar/run/dockersock
ThreatMhigation
RuntimeProfilesegsix初var/run/dockersock
ContainerFlrewail
UserAccessControlQAutomat?ca?yPullNewImajes
Whenenabled,theserverwillautomaticallypullnewrepoartones/ima9esfromtheregistryevey
mSecrets
目Hosts
DailyPullTime03:00
QCompliance<
紫Systemv
Integrations
labels
AquaGatewaysSaveChangesICancel
Users
Settings
5.登錄AquaWebj^?Systerr)?Settings,點擊Import按鈕導入aqua_settings.json文件
6.通過groupadddocker添力口docker用戶組
2.鏡像掃描
2.1白名單鏡像
1.通過ImageAssurance內配置,首先設置DisallowImagesbyCVESeverity,則執行
dockerrun-v/:/hostOS-i-tchrisfosterelli/rootplease失敗
2.通過ImagiAssurance內配置,設置chrisfcsterHIi/rcctpleasa鏡像為WhiWlistlmagp,則執行
dockerrun-v/:/hostOS-i-tchrisfosterelli/rootplease成功
2.2禁止未掃描鏡像運行
1.通過ImageAssurance內配置,設置BlockUnregisteredImages,同時對應label(key=vaule)的鏡像可
以做例外,如下圖
BlockUnregisteredImages?>
QEnablebtockunregisteredimages
Donotallowtoruncontainersfromunauthorizedimages
Whitdistimageswiththefollowingpnfix(es):
+Add
Whitdistimageswiththefollowingdockb
+Add
DOCKERLABEL
license=GPLv20
2.執行dockerrun-dimagescan/labeltest未掃描鏡像可以正常運行,因為此鏡像已打了license=GPLv2
的label,如果將此例外去?■即被禁止運行
2.3鏡像安裝包的黑白名單
1.通過ImageAssurance內,設置PackageBlacklist,禁止包含黑名單Package的鏡像運行,可填寫
python包,所有版本,則執行dockerrun-dcentos被禁止
2.通過ImageAssurance內,設置PackageWhitelist,可以設置鏡像必須包含的安裝程序包,如未包含
白名單內安裝包,鏡像將被禁止執行,可填寫python包,所有版本,則執行dockerrun-dalpine被
禁止
2.4自定義規則掃描鏡像
1.通過ImageAssurance內,設置CustomChecks可以使用自定義規則腳本進行掃描,腳本返回0則禁
用鏡像。使用默認SSH包檢查腳本即可,任何安裝了SSH包的鏡像都將被禁用
CustomChecks
QEnablecustomchecks
Anyshellscriptthatresultsinexit-code10,willflagtheimageasdisallowed.
Note:Whenyoueditandsavecustomchecks,youneedtorescantheimagesmanuallyto
enforcethenewchecks.
>ManageScripts
Thispokeywillbeappliedtoimagesthat
containthefollowingword.SpecifythescriptthatwIBbeusedforthe
customcheck:_______
***willassignthepolicytoallimages.
Add
Example-nginx
PatternScript
*check_sshd_installed0
2.在Images頁面將imagescan/centoswithssh鏡像Rescan重新掃描
3.執行dockerrun-it-rmimagescan/centoswithssh/bin/bash被禁止,因為此鏡像安裝了SSH包被
Disallow
2.5包含敏感信息的鏡像
1.在System?Settings內,勾選ScanOptions1的Scansensitivedatainimages并Save
2.通過ImageAssurance內,設置DisallowImageswithSensitiveData,可以設置包含敏感信息(比如
PrivateRSAkey)的鏡像被禁止運行
3.執行dockerrun-dimagescan/sensitivedata失敗,因為其/opt路徑下有id_rsa的PrivateRSAkey
2.6結合Jenkins進行鏡像掃描
1.在Dockerhost主機上執行:
chmod-R777/opt/jenkins
dockerrun-d\
-uroot\
-v/opt/jenkins:/var/jenkins_home\
-v/var/run/docker.sock:/var/run/docker.sock\
-v$(whichdocker):/usr/bin/docker:ro\
-v/usr/lib64/libsystemd-journal.so.O:/usr/lib/x86_64-linux-gnu/libsystemd-journal.so.O\
-v/usr/lib64/libsystemd-idl28.so.0:/usr/lib/x86_64-lirux-gnu/libsystemd-idl28.so.0\
-v/usr/lib64/libdevmapper.so.l.02:/usr/lib/x86_64-linux-gnu/libdevmapper.so.l.02\
-v/usr/lib64/libgcrypt.so.ll:/usr/lib/x86_64-linux-gnu/libgcrypt.so.ll\
-v/ui>r/lib64/libdw.bo.l:/ubr/lib/x86_64-liriux-griu/libdw.j>o.l\
-v/usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7\
-p9090:8080\
-namejenkins\
--restart=always\
jenkins
2.生成的ienkins可通過http:〃(DockerHostlP>:9090進入,用戶名為admin,密碼為password。
3.進入ManageJenkins?ConfigureSystem將以下各項按實際情況填寫,其中的IP地址都是docker
host測試主機的。
4.點擊test項目>>manage,諛置項目要掃描的鏡像名及其所屬Registry名,此處Registry名為在Aqua
Server?System?lntegrations?Registry里進行綁定的名字,
Imagetoscan:
OLocalimage每
@Hostedimage?
Hidebaseimagevulnecabilries
5.最后運行test項目的build即可,里面已添加了Aqua鏡像三描的步驟,從Consoleoutput杳看掃描
執行結果
3.威脅阻止
3.1Processlimits
1.通過ThreatMitigation內,勾選ForkGuadr卜.的EnableForkBombProtection,設置Processlimit為
10后保存
2.執行dockerrun-dthreattest/process,里面已開啟了超過10個進程,多余進程會被禁止生成
3.2只允許Link內容器互相通信
1.執行以下命令生成兩個容器:
dockerrun-it-v/opt/aquatest:/usr/share/nginx/html:ro-p80:80-d-namenginxweb\
networktest/nginxweb
dockerrun-it-d-nametestcentos
生成后進入test容器可以curl到nginx發布的網頁
dockerexec-ittest/bin/bash
curlhttp:〃<dockerhostip>
2.在ThreatMitigation?BlockNetworkingBetweenunlinkedContainers下勾選BlockNetwork保存后,
再次進入test容器無法curl到網頁
3.重新生成新的帶link的centos訪問容器即可curl到網頁
dockerrun-it-d-linknginxv/eb:testlinkcentos
4.敏感信息管理
4.1自納管Secret
1.通過之前的配置導入,前臺網頁Secret內應已有一個aqua.password
2.運行dockerrun-it-d-namesecretsecrettest/static_password
此容器己將aqua.passwcrd作為Password環境變量打入c用戶執行dockerinspectsecret|grpp
password只會看到Password={aqua.password),看不到真實值
3.用戶執行dockerexec-itsecret/bin/bash進入容器執行env命令后,可看到真實值。同時用戶如在
前臺網頁端對aqua.password的值進行更改后,容器內對應值也會動態刷新到,不需要重啟容器
4.2CyberArk納管Secret
1.Aqua可以CyberArk的CCP進行綁定配置,通過其獲取CyberArk平臺內保存的密碼.通過
System?lntegrations?SecretKeyStores,點擊AddSecretKeyStore進行綁定,其中的Test
Connection按鈕沒有任何實際作用。
ModifyKeyStore:CCP(CyberArkEnterprisePasswordVault)
QEnabled
*ConnectionURL
https:〃192.168.195/
*AppID
AIMWebService2
?Safe
Windows
PullInterval(minutes)①
1
Labels?
TestConnection
ConnecitionURL:CCP的訪問地址,只需要填寫IP地址,不需要后綴
AppID:CCP使用的AppID
Safe:獲取密碼賬號所/Safe
PullInterval:定期刷新時間(測試下來沒有實際功能,即無法將新值自動刷新到容器內)
2.在綁定的CyberarkVault內,創建WindowsSafe,配置CCP相關APPID和Provider用戶對此Safe有
獲取密碼權限,同時創建?個測試賬號,賬號名為CyberArkVaultTest
3.在Aqua網頁端>>Secrets?AddNewSecret,在Store處選擇步驟一新建的CyberArkStore名,在
Name處填寫Vault內賬號名,即CyberArkVaultTest
Secrets>NewSecret
CCP(CyberArkEnterprisePasswordVaUH)
4.點擊Save的同時,Aqua會嘗試獲取密碼,如有報錯會直接在頁面內顯示出來
5.運行dockerrunitdnamesecretsccrcttcst/static_password
此容器已將CCP.CyberArkVaultTest作為CyberArkPassword環境變量打入。用戶執行dockerinspect
secret|grepCyber只會看到CyberArkPassword={CCP.CyberArkVaultTest},看不到真實值
6.用戶執行dockerexec-itsecret/bin/bash進入容器執行env命令后,可看到真實值。
5.容器運行限制
5.1以指定用戶運行容器
當運行容器時沒以也參數指定運行用戶環境時,Docker默認將以root用戶運行容器,最高用戶權限所
帶來的風險可想而知。用戶可通過AquaSecurity中的Runtimeprofile來限制容器運行時只能以當前Host
用戶的UID和GID來運行
IdentityInsideTheContainer
Allowcontainertorunwithanyuser
?Runinowner'susercontext.UsetheUIDandGIDoftheuserwhoexecutedthecontainer
Restrictcontainertorunwithspecificusers
Preventrootuserfromrunningcontainers
1.不加-u參數運行容器后,得到的UID和GID為Host當前用戶docker
dockerdocxker5dockerrun-it--nanetestruntimecentos/bin/bash
WARNING:Error叮/home/docker/.docker/config.json:permissiondenied
WARNING:YourkerneldoesnotsupportswapUnitcapabilitiesorthecgroup1snotmounted,neworyHaltedwithoutswap.
bash:/root/.bashrc二:P_e_rm_issi-on-de.nied
iid-lOOO(docker)gid-1000(docker)^roups-1000(docker),4(adn),24(cdron),27(sudo),30(tape),46(plugdev)t110(lxd),115(lpadmin),116(sambashare)
2.同時我們可以限制容器不以root用戶運行。
IdentityInsideTheContainer
?Allowcontainertorunwilhanyuser
Runinowner'susercontext.UsetheUIDandGIDoftheuserwhoexecutedthecontainer
Restrictcontainertorunwithspecificusers
QPreventrootuserfromrurningcontainers
3.當以root用戶運行容器時,得至ljPermissionDenied的報錯,同時AquaSecurity內也有對應
Block日志。運彳亍命令為dockerrun-itruntime/runuser/bin/sh
root@aqua~]#dockerrun-itruntime/runuser/bin/sh
ernrissiondenied
r*ArlVfllib/iiiH_
Containerelastic_thompson'triedtochangeuidtouser(0)
imageruntime/runusef:atest
Contaner:eas*c.thompson
ConxanerID:d304266-a610
User:roo:
ProcessID:1
Runtme3rofileRuntr-e_Runuser
ReasonforBlockUnauthorizeduse,blockedbyrun:meprofie
5.2限制容器運行時的只讀文件
1.用戶通常希望在Container運行時不要對容器的一些關鍵系統或程序文件進行修改,比如/etc、
/bin目錄等。AquaSecurit/可以通過RuntimeProfile來做到這點
Read-OnlyDirectoriesandFiles
Speedydirectororftes?oe^srictedBSreadcZy
Direct?7menuj£endMmslash/
+Add
READONLYDIRECTORYORFILE
~/etc/0
/bin/0
ExcludeList
Specrfydirectooescrfies:ha:willoeexd'jdedfremtheIts:aoo.w
4-Add
2.設置對/etc目錄的只讀后,以root用戶運行容器仍舊無法對/etc目錄下的任何文件進行修改。
運行命令為dockerrun-itruntime/file/bin/sh,之后vi/etc/hostname修改文件會有如下報錯
reerror:operationnotpermitted!
Userroot-performed7bin/busybox/etc/hostname
Image:runtime,-fie:ates:
Container:AFA二也小m
ContainerID:002567-edCOD
US?r:fOOX
UserId:0
EffectiveUser:root
EffectiveUserID:0
Category:2
Action:open
Resource:exc/hostname
ResourceDigest:
Process:
ProcessID:6
Runt*reProfie:Runtm?_PeasOniyFIe
ReasonforBlockjnauthonzedactonDeckedDyruntmeprofile
5.3限制容器運行時的可執行命令
i.限制用戶在容器運行時的可執行命令是十分重要的,其能有效避免一些誤操作所帶來的嚴重后
果。AquaSecurity可通過Runtimeprofile里的AllowedExecutables來設置容器運行時的可執行
命令白名單,如下圖我們只允許執行/bin/bash命令。
AllowedExecutables
Separateallowedexecutablesforsuperandnon-supefusers
+Add
EXECUTABLEFILE
bin/besh0
bin/sh0
Ifempv.allexecuxableswi:beallc.ved
2.當用戶試圖執行Is命令時,得至Permissiondenied的報港,同時AquaSecurity處也有對應
Block日志。
[root@aquadockerrun-itruntime/command/bin/bash
bash:/usr/libexec/grepconf.sh:/bin/sh:badinterpreter:Permissiondeni?
bash:/usr/bin/tty:Permissiondenied
[root@533e4e669fc8I/]#Is
bash:/usr/bin/ls:Permissiondenied
[root@533e4e669fc8/]#
3.當用戶在AllowedExecutables處加上Is命令后,此命令即可正常在容器內執行。即使sh腳本
中有相關命令也同樣被禁止
HSeparateallowedexecutablesforsuperandnon-superusers
+Add
EXECUTABLEFILE
/bti/bash0
/bin/sh0
/bin/ls0
Ifempty,allexecutableswillbeallowed
***??*???,??一?,?*???,■??=?■??*■*?、*??①~???=、?
[root?533e4e669fc8.q*Is
anaconda-post.logbindevetchomeliblib64lost+foundmediamntoptprocrootrunsbinsrvsystmpusrvar
[root@533e4e669fc8/]#
5.4限制Container運行時的進出網絡
1.對于Container運行時的對外通信,用戶可以限制其進出網絡,從而隔絕容器不必要的網絡通
信。用戶可以在AquaSecurity內Runtimeprofile的Network選項禁止對應鏡像生成的Container
的對外通信。
Network
Denyinboundnetwork
QDenyoutbound旌-方產
2.這樣當Container內部嘗試與外部網絡通信時,就會失敗。同時AquaSecurity也會記錄對應的
Block事件。測試命令為dockerrun-itruntime/network/bin/sh
一?J?????一?
/#ping3
PING192168.200.33(3):56databytes
AC
—3pingstatistics—
120packetstransmitted,0packetsreceived,100%packetloss
/*
Userroot'performed11921682003342192
Image:runtrreretwork:ares:
Container:sleepy.kepler
ContainerID:73c7679d9481
User:root
UserId:0
EffectiveUserID:0
Category:network
Action:connect
IPAddress:19216820033
Port:42192
Process:
ProcessID:933
RuntmeProfeRumEjNsvork
ReasonforBlockNetworkconnectont/ockedbyruntimeprofile
5.5黃金鏡像一保證Container不對容器內任何文件進行修改
1.針對一些黃金鏡像,用戶不希望容器對其進行任何修改。則我們可以在AquaSecurity的
runtimeprofile中的ContainerEngineControls中勾選Read-onlyrootfilesystemo
ContainerEngineControls
Thefollowingcontrolswilbeenforcedwithanycontainerexecution.Notethesecontrolswillalsobeenforcedonaudit-onlyhosts.
3Read-onlyrootfilesystem①
Nonewprivileges?
Seccompprofile:
I________________________________________________________________________________________________z]
DropCapabilities:
selectcapabilitytodrop...
2.用戶嘗試修改、新增、刪除容器內的文件報錯,無法進行增刪改。測試語句dockerrun?it
runtime/goldenimage/bin/sh
/etc#touchtest
touch:test:Read-onlyfilesystem
/art-a
—>PackageIzo.x86_640:2.06-8.el7willbeerased
——>Packagepython-decorator.noarch0:3.4.0-3.el7willbeerased
-->ProcessingDependency:python-decoratorforpackage:python-firewall-0.4.3.2-8.1.el7_3.3.noa
—>Packagepython-slip.noarch0:0.4.0-2.el7willbeerased
E45:'readonly'opticxiisset(add!tooverride)
5.6限制Container不以特權模式運行
1.容器運行時如果加上‘-privileged'參數,即會以特權模式運行,可訪問Host上的所有設備,
此容器幾乎與主機上其他運行的進程一樣可訪問主機資源,這將帶來十分高的安全風險。所以
我們可以通過AquaRuntimeProfile里的配置禁用特權模式運行容器。
LockdownvX
Preventrunningexecutablenotinoriginalimage
Preventrunningcontainerwhenimageparametersarechanged①
C3Preventrunningwithelevatedprivileges(e.g.-privileged,-network:host)①
2.設置后,當用戶再次想以特權模式運行容器時得到'Blockedbvruntimeprofile'的報錯,同時
AquaAudit日志里也有相關Block信息,測試命令為dockerrun-it-privileged
runtime/nonprivileged/bin/sh。
[root@aqua~]#dockerrun-一pr~iv,leged"]runtime,'nonpr「vi~leged/bin/sh
docker:Errorresponsefromdaemon:[Aqua-security]YOUdonothavepermissiontoexecutethiscommand,
see'dockerrun--help'.
v08Nov05:USOPM*BlockUserroocrancommand-ce”onnostaqua
dockercreateruntim?/nonpnvihg?d:late3t
Host:aqud
imageName:runtfne/nonprtvle9eclaiesr
UserAccewRule:Runtime.Nonprivile^ec
ReasonforBlockOontawextendedpri?legeswLeWocKedbyruntimeprofile
5.7限制Container掛載的數據卷
1.掛載數據卷是Container容器間分享永久數據的一種方式,這些永久數據通常都會影響應用運
行時的配置,一些誤操作的寫入可能會導致Container內的應用無法正常運行,所以針對掛載
數據卷的限制也是十分必要的。我們可以通過AquaRuntimeProfile里的Allowedvolumes配置
來指定Container運行時允許掛載的數據卷及其寫入讀取權限。
Volumes
Allowedvolumes:
ReadWrite,+Add
MountPathAccess
/daxa/caxareaoonly0
2.當用戶想要掛載其他數據卷時,得到‘Blockedbyruntirreprofile'的報錯。同樣當用戶想要以
ReadWrite權限掛載時也會報錯,運行語句為dockerrun-rm-it-v/data:/dataruntime/volumes
/bin/sho必須指定ro權限才能正確掛載,,運行語句為dockerrun-rm-it-v/data:/da:a:ro
runtime/volumes/bin/sh。
[root@aquadockerrun--rm-it-vuntime/volumes/bin/sh
docker:Errorresponsefromdaemon:[Aquasecurity]YOUdonothavepermissiontoexecutethiscommand.centaln<
See'dockerrun-help".
[root@aquadockerrun--rm-it-v/data:/data:roruntime/volumes/bin/sh
5.8自主學習并生成安全規則
1.有時我們自定義的規則無法滿足一些復雜的Container運行情景,此時我們可以讓Aqua進行自
主學習,其會根據指定image生成的Container運行情況,自動生成對應的Container運行規則。
如下圖,我們在AquaSystem及image級別開啟了自動Profile生成。
AutomaticProfilingOptions
QProfileallimagesautomatically①
Enforcementmode①:EnforceAuditOnly
Learningphaseduration(inmnutes):10
Learningphaseduration(inexecutions):2
?UseDefault
>centos
QProfileAutomatically
>jenkins
UseExisting
>jiihiintii
CreateNew
>kam/pingUseProfiler
>leam/tutorial
>nginx071
7nginxG5Aqia.defaul
nginxlatest0(approved)。310
nginxvi?3A10AOSelectLab(
nginxvltestaqua①3A10AO
2.待配置的10分鐘學習時間過后,Aqua即會根據之前Container運行的情況,自動生成對應的
運行規則,用戶可在此基礎上再進行自定義調整。
,NameMnxIoolwn9iHeAvailableProfiUControh
Oeser0MAutomaticallygeneratedbyAqua
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 系統架構師職業能力的構建考題試題及答案
- 行為醫學第三試題及答案
- 衛生管理證書考試動態了解試題及答案
- 網絡規劃設計師考試中的基礎知識講解試題及答案
- 系統架構設計師考試背景中的知識更新機制與現實應用考察試題及答案
- 激光工程師證書考試的復習策略試題及答案
- 系統架構設計師的持續學習與考試適應性試題及答案
- 藥劑考試學生成果轉化試題及答案
- 藥物質量標準與控制考題試題及答案
- 系統架構設計師考試各模塊重點解析試題及答案
- 低碳環保管理制度
- 2024年憲法知識競賽必考重點知識(共50個)
- 2024年江蘇省淮安市中考一模物理試題(含答案解析)
- 風電場檢查合同協議書
- 佛云學校多功能室、電教室、體育館設備采購項目招標文件
- 人教八年級上冊數學《從分數到分式》教學課件
- 揭陽市人民醫院檢驗科 標本采集手冊
- 幼兒園班級幼兒圖書目錄清單(大中小班)
- 烈士陵園的數字化轉型與智能服務
- 小學科學實驗教學的現狀及改進策略的研究
- JT-T-961-2020交通運輸行業反恐怖防范基本要求
評論
0/150
提交評論